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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

* C7 R7 h$ ]1 Z5 k

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
$ t: S, F6 f  o+ T: J0 ?
) m, t+ X$ g* L$ O4 L1 s$ r1 I. r) J2 X
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开1 u& f0 ^1 Z. @
  2.     }
    / H' r) w; d/ L. N1 G
  3. ) R+ g: C* b7 p; k6 r) i& y
  4.     socket.onmessage = function(){5 K& q# Z. i2 I. I7 y8 p! N
  5.         //在event.data消息数据
    8 L9 p3 [' T* J: L  k
  6.     }8 p* k! Z' |6 {1 U
  7. - k0 E0 y+ F5 ?6 u
  8.     socket.onclose = function(){9 N1 I  b+ A/ h( \
  9.         //关闭WebSocket
    / U3 p, S8 b* l, ~" U
  10.     }
    " F( }" Z* ~# e* r2 _
  11. 8 p2 L3 |3 J4 g! w
  12.     socket.onerror = function(){! }+ P5 V) \! o% `$ L* A+ U
  13.         //错误触发
    : }2 e* l8 Y) T" `: B, q8 d) \
  14.     }
复制代码

* S* h9 u; e8 Q: X! `8 |
: V- L3 L+ o; D( M1 ~

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

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

3 R  y0 Y  [+ c6 ?* M/ h& U8 y
1 u" L, x5 I) k/ N
  v0 u; _, |/ u+ y1 N9 }$ x/ g) h

代码附上:

  1. <!DOCTYPE html><html>
    . J! a: `; F- e- {1 ?
  2.     <head>2 _4 Q+ d% n' h7 w
  3.         <meta charset="UTF-8">
    0 L* t. O, q6 ^8 k; u/ y6 ]
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    & b+ t' p5 [% g. t3 j
  5.         <title>WebSocket</title>
    ' v% t. g# L/ d2 I+ w
  6.     </head>" u" d% C% J( e" [
  7.     <body>
    ; Y  `, O3 R  @& b
  8.     </body>
    + U! r5 S" e" V  R$ z" R
  9.     <script>
    9 m( t: ?) I; ~8 x
  10.         var socket;# X  T' f/ d0 [/ P- I
  11.         if (window.WebSocket) {2 N  @& L/ k' b6 H5 ]6 m: ]3 G# H- V
  12.             socket = new WebSocket("ws://localhost:8080/myapp");$ v8 D4 C( c; \. P& ^; E
  13.             socket.onmessage = function(event) {
    5 i1 p1 r+ _* J; d
  14.                 alert("Received data from websocket: " + event.data);7 _; w5 k/ m1 {2 M3 y
  15.             }
    6 a- U1 B# F0 {5 f4 c2 E6 C
  16.             socket.onopen = function(event) {
    7 a3 L' `& J- x' l) y4 y1 }  |
  17.                 alert("Web Socket opened!");
    ' r) f; W' F6 }3 ^
  18.             };
    * X5 r8 J* l4 j% S, C
  19.             socket.onclose = function(event) {; X5 _8 P- k: O
  20.                 alert("Web Socket closed.");
      F' ]9 d& G0 m0 y1 {8 D0 q
  21.             };; j% M3 ~( A! N$ j5 P
  22.         } else {7 R2 _2 M( M! M, y) l
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    1 p/ ~- {! Q6 h
  24.         }
    & k% O' K' ~! |. _
  25. 4 G# F0 r5 }4 Q% S  M
  26.         function send(message) {: y& h4 R8 \( t# X$ X
  27.             if (!window.WebSocket) {- P; t0 I4 ~8 m9 Y* d! l! L
  28.                 return;) J3 B5 s% l4 Z) c: d
  29.             }3 {/ [5 J- \5 B7 y, ]
  30.             if (socket.readyState == WebSocket.OPEN) {
    ) J- X6 r& T( ]1 u3 i/ K1 Z
  31.                 socket.send(message);
    : Q: K) n* V, X# n, |1 N8 k
  32.             } else {
    % Q' z7 S* ~- L& O. j* v& n
  33.                 alert("The socket is not open.");
    ' D5 ?0 L0 g3 Y% U( G+ i% N
  34.             }# X& _7 P& {9 w% X- `$ P2 U
  35.         }
    - Y9 w; J, S+ g8 d- g, `- x
  36.     </script>
    " ~* a, x8 _3 V/ f3 K
  37. </html>
复制代码

6 l  I  Y( |  s6 k, C2 p% U, ?
* `, h% \! [6 l
4 ~% x/ Q4 K6 S7 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 21:45 , Processed in 0.072309 second(s), 19 queries .

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