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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10805|回复: 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");  
复制代码
" |+ P. o8 {+ G0 C. [

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
! g0 B9 v. w+ M. Z- ~- Z. {; r/ y* Y/ T  q. @% o
! e! f+ P7 P, d+ |: k
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    : a$ b% d& I- ~, i% s
  2.     }: l& I$ ]9 H/ T
  3. ; ~9 S! a2 g6 m: J! ~+ x4 q! `
  4.     socket.onmessage = function(){9 m9 }& H  d, K/ \7 o
  5.         //在event.data消息数据
    ) r6 `$ Z3 x0 B/ J1 D3 k4 t9 h9 z
  6.     }& L- T2 u+ H8 y& [' O8 j/ m

  7.   k9 \; _  \' C, b$ }
  8.     socket.onclose = function(){
    " _9 x' I; x' s2 f
  9.         //关闭WebSocket
    / e3 S9 X+ ~: X- S4 P) K$ _) s
  10.     }
    & X" G4 m- O4 r  s/ z

  11. ! v' Z" A6 Q5 V9 Z) m
  12.     socket.onerror = function(){
    3 t2 C. A7 n- w) j/ a! J
  13.         //错误触发# K+ \9 O$ n; B0 t1 o& c
  14.     }
复制代码
) @  @. p3 R  O; o+ T5 H6 |  X5 E

& j0 ^3 p, I9 Q; N7 R. A8 ?3 v+ [

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

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

1 j1 G, M* l3 R$ r, d0 v9 y+ u" K7 B; Q2 |* k8 W

6 V% r) G# D5 V. ]8 j

代码附上:

  1. <!DOCTYPE html><html>. G0 v9 u  E. m. }+ D+ J: K8 A, x7 A
  2.     <head>; P6 y' v2 S- c/ L' a
  3.         <meta charset="UTF-8">
    1 C5 j' M% U. y% t6 l4 l- F' I  ^
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">% c' c. v0 R# c; @
  5.         <title>WebSocket</title>2 C- y% |0 _( h( |8 V9 Q2 `5 ^* ^
  6.     </head>9 T/ [( s# L+ Y
  7.     <body>
    0 t5 T+ m! x. C% s
  8.     </body>
    0 \& l8 P$ ^' x+ \) p6 w0 V
  9.     <script>
    . d2 P/ l! [* B/ v, i
  10.         var socket;
    7 W2 j( |2 y' r, b& Z8 ^2 G
  11.         if (window.WebSocket) {8 B" l2 h, r6 C2 m2 F6 R) }( z
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    1 Y6 e. P, L, \+ q9 c
  13.             socket.onmessage = function(event) {% k  ^# ~; J$ L3 P/ \( \6 I
  14.                 alert("Received data from websocket: " + event.data);
    0 q2 q8 f9 Q5 b$ j. v& b# C* Q
  15.             }- B+ B; Y( @% {3 k* u6 B" J+ M/ F
  16.             socket.onopen = function(event) {9 ?, p$ F9 {) F* n
  17.                 alert("Web Socket opened!");
    + Z) C* I  i* X6 q: _
  18.             };0 |* X: v3 V+ Z% P
  19.             socket.onclose = function(event) {& E/ D& N5 H" ?. x
  20.                 alert("Web Socket closed.");8 I; R3 C* J2 f' m% {2 _" @( w- s
  21.             };# N/ M! @, B3 n, f
  22.         } else {! q7 C$ j" z0 b- [) r
  23.             alert("Your browser does not support Websockets. (Use Chrome)");0 P/ n/ B* l, c1 w* \, i. h) f
  24.         }
    8 X) m. N$ N; S( k* E
  25. ' d! ?! M) f0 Q: d0 \3 r1 w" P
  26.         function send(message) {
    : E! Q1 |+ t8 _( b0 i
  27.             if (!window.WebSocket) {
    / P+ h4 s- F" L8 ^7 h" }
  28.                 return;. e- `: f- ?8 g8 b
  29.             }
    + |- {2 D- k1 I6 F' n8 }
  30.             if (socket.readyState == WebSocket.OPEN) {8 b/ A8 t% M) @( y0 F8 k& l( N! u
  31.                 socket.send(message);
    # x0 |3 Z8 N& x. `$ h3 X
  32.             } else {
    ' G3 h2 J3 S! b. B7 w
  33.                 alert("The socket is not open.");7 D& y( ?  r; R3 K) l5 Q% l" q
  34.             }
    1 ]# P& A" A; c+ a2 n  @7 I3 O
  35.         }1 |2 ^* X5 r8 Y& B- R
  36.     </script>
    1 l5 ?+ T% J0 k7 d  z, W2 t
  37. </html>
复制代码
' q( s( C; B, d2 {) v3 ]' i" b7 }$ U

% }/ O9 ]6 g- j/ W% F: ]- d1 R( B$ q3 C( ^2 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-28 06:30 , Processed in 0.103508 second(s), 20 queries .

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