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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14351|回复: 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");  
复制代码
6 W+ J6 \, H3 i6 i

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 3 D3 v; o) Z! Q3 s
- h; X; J- ]  }9 y+ P9 m
) E: j4 P9 }. k3 O' k
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开! D: H+ Q# y& d5 r. R
  2.     }$ W. Q9 y7 h; U6 n
  3. 3 [3 v; z7 i+ H" ]5 i
  4.     socket.onmessage = function(){
    7 e. ?0 h" Q( z9 y
  5.         //在event.data消息数据
    . s, I: t4 x8 _9 O
  6.     }
    + i# u; E2 f! V& R1 L

  7. $ r3 r  L) I/ S9 a% E# Y5 [" H
  8.     socket.onclose = function(){
    # D" j9 Y, c0 h7 Z
  9.         //关闭WebSocket
    $ ^+ w% o) M8 ^8 U5 w1 i' n' t# r
  10.     }, D1 j) f# p6 ?3 F4 a$ W
  11. % G# [: E5 g8 o. Y  ~9 }0 u
  12.     socket.onerror = function(){( @. s, k- C; W/ f: U' r' @
  13.         //错误触发0 t' t# w/ m; _. s8 Z& [
  14.     }
复制代码
& t5 _1 f6 B" c6 e+ w/ ]6 I

, o: f- Q! D3 M6 s  i1 S. K

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

  1.     socket.send(message)
复制代码

. I; y4 c# l* \8 h. K3 U
- F  q/ m" x* r9 m
: I" Y3 o6 [, _9 g" o9 h5 E8 j2 N* d) i

代码附上:

  1. <!DOCTYPE html><html>
    $ i/ {. s( l- `* H' e
  2.     <head>
    ' @, f! K; n# L# l0 j1 I
  3.         <meta charset="UTF-8">
    - T: A5 N" E, T# o
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">3 p* v9 V+ y  }2 D2 j, U
  5.         <title>WebSocket</title>0 b. h: d% b! k
  6.     </head>
    1 l% ~# ^2 X8 z
  7.     <body>7 `5 Y+ Z* k* n% h2 s: h9 a
  8.     </body>
    / p0 k& C. S; i3 v7 e( s
  9.     <script>  f$ \" V2 \4 F% B
  10.         var socket;
    0 H: b* S4 d2 w8 Q
  11.         if (window.WebSocket) {
    % |! j8 k9 t5 q  R$ r  l
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    6 p% C2 @" L" }& W
  13.             socket.onmessage = function(event) {! V4 |2 P" U4 [* [3 W3 J
  14.                 alert("Received data from websocket: " + event.data);
    3 H; C$ m8 L/ M) B* r
  15.             }# b, ]' _! }2 B  M
  16.             socket.onopen = function(event) {
    5 t, t9 Z/ b7 m8 P3 K
  17.                 alert("Web Socket opened!");6 C6 I  I2 m; s% Q- ]3 H
  18.             };
    " H% n! U0 ]* J- }' U  {
  19.             socket.onclose = function(event) {& K/ F6 T; [- r# \- n
  20.                 alert("Web Socket closed.");& Z) v/ x( a/ n9 ]9 Z. Y4 |
  21.             };
    5 C8 E- M) N# M# X2 ?0 W" u
  22.         } else {
    ) F6 Z5 f3 [6 o- }1 h* C( S. J) E) }
  23.             alert("Your browser does not support Websockets. (Use Chrome)");4 r! ]# ^: E7 B
  24.         }
    * L; L; M2 q6 ^4 Y9 V
  25. / {# U7 V1 V* C% W% x3 D/ j( y2 Z
  26.         function send(message) {) T9 t. I+ E/ q& ]# O
  27.             if (!window.WebSocket) {
    8 A6 O$ \" B* f' y
  28.                 return;
    , [8 D# i  ]8 |! S, t; Q: H
  29.             }
    1 p( ]& O: O% d" @" f
  30.             if (socket.readyState == WebSocket.OPEN) {
    ; ^- w: \5 o6 J
  31.                 socket.send(message);
    / P/ {2 v+ G0 ^* i$ j3 ]
  32.             } else {4 a2 b6 z+ }: G+ H' V5 b' \
  33.                 alert("The socket is not open.");
    ) q/ X% H. v  ~4 x  p* x! Z
  34.             }0 a" \2 q5 s- z6 n- P" m
  35.         }- _4 ~8 f5 u. n0 {- k: @
  36.     </script>
    ! l: @1 x( M  K
  37. </html>
复制代码
& s* B( f) `# a

# o( U5 R  Z+ q# p- P
0 C3 c% Z/ Q- J9 g0 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:39 , Processed in 0.056948 second(s), 20 queries .

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