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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11572|回复: 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");  
复制代码

( D* }* \) {' o% O/ Z

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 6 p- {  S& [) `# q

6 C. x( z* B* B7 R: H; r9 p; D5 K# |" \- N) t1 g0 v
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ; H1 |) |1 K5 Q5 `* d
  2.     }
    ' Y8 l! ?& L- T/ u

  3. " j' F( T8 T; ^" r+ q
  4.     socket.onmessage = function(){$ Q3 h5 ~: p* s
  5.         //在event.data消息数据( j6 |- ~) }9 P' ^
  6.     }3 A" G" u! D/ X+ q% Y

  7. 4 h7 j& v7 c( ^+ y9 _
  8.     socket.onclose = function(){0 a! h' n' @) n1 w6 ?
  9.         //关闭WebSocket
    9 s  ~! S7 C/ J% j% O
  10.     }. B/ `5 m7 b" N8 E8 F; a6 w* m
  11. & I) N4 a( m8 F2 v" D  p- W5 z, A
  12.     socket.onerror = function(){# ?* X% E, P5 e/ J0 ~; S9 M
  13.         //错误触发
    0 Q) P8 ~' R6 a* h3 G# }! E# \
  14.     }
复制代码

: t; ]: M5 A. U1 ]" v" ~
% h" E2 {4 b6 `

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

  1.     socket.send(message)
复制代码
, G2 \0 U5 v* F) g  }

3 V) I0 p/ K+ k/ b
. Z4 f4 T1 q0 n: a9 \8 ^5 o( E- r5 _

代码附上:

  1. <!DOCTYPE html><html>' m1 b4 x3 ~0 x' c
  2.     <head>6 h! [7 ]8 K: p9 e  l
  3.         <meta charset="UTF-8">7 ?7 m5 O) s$ r+ `" h2 _
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">9 ~; D( E! p9 v3 T* v: H& W' q
  5.         <title>WebSocket</title>
    0 A( E' j9 u" a" q+ e
  6.     </head>
    # i2 B. @* y6 K) k# ?
  7.     <body>
    ; f# h& u2 J. Y9 ^
  8.     </body>
    . X8 v( _" k5 {- ^( m; L7 ]
  9.     <script>
    7 E0 P1 @" X4 x. o9 ]& j+ a/ H
  10.         var socket;
    4 J# s& x' Y$ X9 F+ b; N
  11.         if (window.WebSocket) {+ [4 C2 B& ?9 o+ o' V
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    6 e0 x/ G% {# [) m3 G* r( q8 p6 U
  13.             socket.onmessage = function(event) {
    % D1 M$ X/ h6 N2 I
  14.                 alert("Received data from websocket: " + event.data);+ P. o2 g$ h; D( S! \! i, m
  15.             }
    4 {8 M( Q6 |9 I( w
  16.             socket.onopen = function(event) {
    0 z; L5 U" Q! P2 _
  17.                 alert("Web Socket opened!");
    5 D. J* ~3 m# F
  18.             };3 ?- ?; I2 O- N- R4 T! _; B5 d
  19.             socket.onclose = function(event) {1 L1 ?( ?  E$ J3 T
  20.                 alert("Web Socket closed.");& o& d* |/ C5 j0 u" G
  21.             };! Q; _$ Y3 \& H/ J
  22.         } else {
    % E2 p0 B2 P; D! Y5 X* C- r' {
  23.             alert("Your browser does not support Websockets. (Use Chrome)");$ s( R7 `% e$ ?5 w
  24.         }
    + P; N6 N+ z( Y% t8 [( g

  25. 6 b4 z6 n' T/ l1 L5 ]6 b
  26.         function send(message) {( q' R; m! ^% J4 \. M# J7 o3 r
  27.             if (!window.WebSocket) {
    7 a8 W& N5 d8 C. `
  28.                 return;) S3 i! F) x1 X9 ?5 |
  29.             }+ |- ?$ D: L8 x+ Y* \! g4 S# H
  30.             if (socket.readyState == WebSocket.OPEN) {
    / N! K2 q' v* U$ @2 N4 g' p
  31.                 socket.send(message);
    # e1 {* _3 P$ R
  32.             } else {
    9 j1 ^, O* k: Z/ W6 u7 c* T, o. d
  33.                 alert("The socket is not open.");
    $ B( }- w! j- `- b, A, k
  34.             }
    ; D: p' B- n. ~) K# h/ |- C
  35.         }) f8 |% D) f' a* t6 I
  36.     </script>- }' G( f4 _; r* G2 A; {5 ]
  37. </html>
复制代码
/ }5 Y7 O" D* u) a

" T4 W5 ~; Q6 q# q  J+ M& b; b7 O6 }2 P) p6 R0 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 16:17 , Processed in 0.104181 second(s), 20 queries .

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