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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14712|回复: 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");  
复制代码
1 r! F9 `' A. r8 F

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ' m9 a8 m# x; M. Q6 v- ?6 D! e

8 a7 R. U0 A7 r
5 b$ l" U! w" Q该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    5 r# b- r% [' r* H, t2 x
  2.     }
    ; J4 ^9 z! w0 B+ k& o0 t) q) i
  3. * m' s8 }: I8 x8 L
  4.     socket.onmessage = function(){
    $ z0 N9 @- m4 J9 e# z6 r* f9 @9 E/ \
  5.         //在event.data消息数据  F- t& c/ o7 Z+ \3 V6 {$ Z8 @/ k* [/ ]
  6.     }3 U2 z; e+ o. o8 t# ^( }# v

  7. , T/ r$ s! z3 f! C
  8.     socket.onclose = function(){2 W. ~- b0 {! k& N- a! Y
  9.         //关闭WebSocket% ?4 _. x, J3 I0 m8 t. f4 X
  10.     }
    + g2 [! e/ ^$ r: M; Q5 n# I
  11. 7 H. d# M% P2 L& [$ w) K2 s6 N
  12.     socket.onerror = function(){
    1 {1 |/ w4 N2 G7 s$ V
  13.         //错误触发
      N2 [) ~+ _) u- p# I: u3 s
  14.     }
复制代码

8 L) E6 q4 R# v9 K  k% F# g  O

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

  1.     socket.send(message)
复制代码
) v9 E% A% K8 W, a8 L5 `

1 B0 d0 K8 Z; a% k0 ~8 c+ }# P2 O& [+ g, s! Y! `3 J

代码附上:

  1. <!DOCTYPE html><html>6 p; x: d+ s5 K: Y! q/ D
  2.     <head>
    3 N6 b! y# G: _1 ]; Y  F0 F) |
  3.         <meta charset="UTF-8">
    7 g  `& y- V" u
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    $ a$ R% c; e( ~) i- L/ X
  5.         <title>WebSocket</title>0 |, O) P* {* j# M6 @5 ^
  6.     </head>
    ) a6 |: ^4 r/ }) P$ b
  7.     <body>1 B! j1 K2 z: ?6 {
  8.     </body>
    4 y) M+ M3 |5 h# x: e& P+ U
  9.     <script>
    % x$ [$ q. o! \4 g7 i7 {6 z
  10.         var socket;0 u% o- K/ t4 G& k
  11.         if (window.WebSocket) {! e- g7 u4 z2 V4 D6 g$ Q) M6 W
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    $ n) o7 i9 Y0 G
  13.             socket.onmessage = function(event) {$ u; M0 d" ?# M4 C  X5 N# C
  14.                 alert("Received data from websocket: " + event.data);6 M. q) G# }1 l( {% D% |, o
  15.             }) p+ u3 }9 s, w9 [
  16.             socket.onopen = function(event) {3 `' ~' v0 ^+ \# q; V
  17.                 alert("Web Socket opened!");
    4 j* O. H1 K/ @
  18.             };
    , w  ?: w; y9 T: A, E
  19.             socket.onclose = function(event) {( }% K# o/ y7 l# O
  20.                 alert("Web Socket closed.");1 N/ _8 P1 S) B$ r( w
  21.             };
    ; V5 N% t, l) j# b: A4 H* A  ?4 o. Q
  22.         } else {
    $ G: w2 T1 U) Y0 x! N
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ( Z+ A6 |4 @3 f9 b3 f2 p
  24.         }2 d* D/ P& v4 z* C+ p7 f
  25. 8 a3 x! Y. y/ m/ J7 f! q
  26.         function send(message) {# U8 V' K+ e+ ~' w9 A& r
  27.             if (!window.WebSocket) {: [1 {7 q/ E7 _% b- d0 |
  28.                 return;
    ; C; v. t9 K8 ?& Z. ?
  29.             }
    8 R1 l5 ~$ f7 T' n  o6 r
  30.             if (socket.readyState == WebSocket.OPEN) {) m- j  W4 d3 O# X5 ]" `+ u
  31.                 socket.send(message);
    # b, ^- c4 R% E1 R$ X- q
  32.             } else {
    ; Y+ Z6 |" x; F8 ]) z
  33.                 alert("The socket is not open.");
    3 a4 K' ~" e0 ~8 P  c
  34.             }: L: M8 ~/ }6 [* M: [, s! \
  35.         }& i3 P8 P: \! Y
  36.     </script>8 G3 U% w  V' U) n
  37. </html>
复制代码
$ l  [2 B. G5 i; p" x

2 G$ _1 B7 o- P
5 J! `* ]4 j3 X' s, W% u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:03 , Processed in 0.057431 second(s), 19 queries .

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