您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11577|回复: 0
打印 上一主题 下一主题

[php学习资料] 浏览器使用WebSocket实时通讯

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-23 19:36:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

如果你要有一个支持 WebSocket的服务器(Java、Php等),可以在浏览器中使用一个新的WebSocket服务协议,来打开一个链接:

  1. var socket = new WebSocket("ws://172.0.0.1:8080/SpringWebSocketPush/websck");  
复制代码

- X  t' k: X$ Y

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
4 G& L, Q- X+ _4 A8 f1 q. H# r) ]4 d, Y: \: j9 r) _

2 i6 h1 C/ S- n; \, O该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    % w0 m6 u; ?) q1 ~* o
  2.     }9 ^  u4 K1 m3 t: ~' K! |& H

  3. ' S( ]& D- ]- T  T* S) e0 _+ U3 o
  4.     socket.onmessage = function(){
    + E' S" O, W' e# a6 |. p0 D8 f6 G
  5.         //在event.data消息数据9 \& l% Q2 d4 ^* Q
  6.     }1 z" D, `4 ?! Y; e5 l6 l, F

  7. 0 J" d3 T$ m) ]+ G# n& W
  8.     socket.onclose = function(){) i' \3 F- [5 x3 u9 t9 G
  9.         //关闭WebSocket$ w0 {$ {: ]9 ]+ N% E; a% f
  10.     }
      Z- u# c9 p, `$ F# K6 e& y
  11. , e8 p) Y, `& o* @9 K
  12.     socket.onerror = function(){
    . T4 r9 X) \& q' y- o- E
  13.         //错误触发& y7 [) @0 F- t$ g! r- b4 Y2 _
  14.     }
复制代码

, G3 ?+ |+ p" R3 M0 C8 V2 E+ b6 B6 P6 f

通过套接口发送数据,调用socket.send:

  1.     socket.send(message)
复制代码
# a3 k" g9 _, A

2 f5 q" t  ?8 ~. i: R2 Q( ?$ G9 P4 C$ [+ z" N# J

代码附上:

  1. <!DOCTYPE html><html>5 A# g( G! k; X- b
  2.     <head>
    7 `! {, |1 }# x% y4 R" ?2 @
  3.         <meta charset="UTF-8">' g5 L  d5 h7 C* j" ~$ `7 W7 X
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">- t6 U; W8 j3 h$ _6 U3 t' |
  5.         <title>WebSocket</title>
    8 j: r5 l/ m- ?6 I2 K1 v
  6.     </head>) B! r" L! o0 V
  7.     <body>
    1 D  r4 v& s, u0 t* v7 X0 x
  8.     </body>
    & @  \2 Y0 I& S
  9.     <script>! V, K6 V; w& Y; k, ^( s+ r3 e* c
  10.         var socket;
    4 D2 Q& `) U5 E0 ^8 B# ~- t
  11.         if (window.WebSocket) {, E# j  x8 ?1 G# ~' L6 l$ L
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ) _4 |% x- r# s2 y& L1 P
  13.             socket.onmessage = function(event) {
    & h6 p3 ?" `6 V+ H4 G" b' ]
  14.                 alert("Received data from websocket: " + event.data);
    # K- L. c: G- w2 t
  15.             }
    - J) a$ i( w! w6 G4 L2 b! \# `
  16.             socket.onopen = function(event) {8 {. a; g3 W# c; }
  17.                 alert("Web Socket opened!");
    - z; p# ]# O+ K2 x
  18.             };7 W# ^5 [( I- E+ T! i! \
  19.             socket.onclose = function(event) {
    - j* Z- W) N) ~. l# o0 z, W. i2 Z
  20.                 alert("Web Socket closed.");; ?6 \) `) E( _" O' g! [
  21.             };
    8 Y. o1 K# ~& F2 o6 e  F, l8 g/ e
  22.         } else {% m0 H8 }$ A8 U$ o& @$ {
  23.             alert("Your browser does not support Websockets. (Use Chrome)");* M! v; H; C2 ^/ S8 ~' K# n# Z
  24.         }  j1 @' ]$ j5 P( H: F  v

  25. 0 J) ]6 `2 g) a6 `9 w" F& n
  26.         function send(message) {
    7 `! `$ s; A! A  y9 I3 w% f9 c# Z3 I8 [
  27.             if (!window.WebSocket) {0 ~; {/ w4 e- W* J9 |% N
  28.                 return;
      @6 s/ U( [6 Z  D: X
  29.             }  q( P" o2 x+ |1 W8 Z
  30.             if (socket.readyState == WebSocket.OPEN) {! z( r6 |9 v) E' h
  31.                 socket.send(message);
    6 L" Y' Y, E) X0 r
  32.             } else {
    * n4 C6 b$ u  f! L% o' T
  33.                 alert("The socket is not open.");
    & q* y: O% z) H9 k; L
  34.             }
    $ A# a, o5 j& q+ e5 T% g" T
  35.         }
    8 @. l8 o  |% m. B) s) h0 T6 g
  36.     </script>/ P  h% c: b) A# f7 i# \5 K* ]
  37. </html>
复制代码

% H/ p& W. g0 Q6 s7 @8 k& L0 x  F$ s5 |8 O
$ J% R( ~$ d9 ]' x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:14 , Processed in 0.100188 second(s), 19 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!