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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14715|回复: 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");  
复制代码
5 O' g6 V- z: ^  y6 O( C/ p

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 - d0 J7 k6 z* o; I3 o5 v7 w, y
9 n( n% c' ~0 i
, z. O6 {6 ~; x
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    0 _1 ?( p$ I8 i! i% y6 j0 E( u
  2.     }
    : I0 e* M  \/ a6 O) k5 W, ^
  3. 1 j$ d4 S' F. T4 K; X1 k3 T, [
  4.     socket.onmessage = function(){
    5 b) Y% t! N& C, ~4 I5 B
  5.         //在event.data消息数据/ U% f  P+ R* U' k+ Y) e5 g! U
  6.     }
    6 ?( y& g8 A4 J2 n

  7. 4 Y5 ^+ e6 T9 x; |/ t
  8.     socket.onclose = function(){
    ) u1 E8 e9 O: X. v9 F( _4 w7 t
  9.         //关闭WebSocket
    4 E- d& i! D3 j; o# r  K" S1 _
  10.     }8 P- h7 O. L5 _5 D) I8 W: b' v% Q

  11. # p5 }4 a4 |! D5 c& J, p/ J# _
  12.     socket.onerror = function(){: O0 a) `9 b/ S6 N# w' l
  13.         //错误触发
      {2 {4 _- `4 z+ o; M: V
  14.     }
复制代码

, G$ L, f' h, j0 Z; {1 j! k* J! x/ j# k: g

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

  1.     socket.send(message)
复制代码
4 t: E9 \6 h# ^* r2 T- i
8 _+ }: i+ a( ?- F! h

! H9 Z( h! v" [$ l* N' W( L

代码附上:

  1. <!DOCTYPE html><html>
    5 r1 p9 w+ S- g- I. K4 l% U; V
  2.     <head>
    , h, \: Z) T2 q# _' j& y+ s
  3.         <meta charset="UTF-8">8 g) x7 c- X6 X1 n/ r) _* t
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">8 t+ }& v7 V) G7 h. m5 ~- T
  5.         <title>WebSocket</title>
    ) K& o$ k& E7 o* R5 j! o
  6.     </head>! A2 m# }! b/ B7 ?$ U( J+ X
  7.     <body>, j! I7 ?; _6 e( o4 l( y1 @
  8.     </body>
    . V# V5 h8 k# e8 k
  9.     <script>: t2 i1 U& r2 v" I5 p
  10.         var socket;
    6 H9 ?% T+ d* |+ E, k# f
  11.         if (window.WebSocket) {
    7 x2 H, b- Z2 Q# P5 U
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    . h; b- I: v( l  Z+ Y* Q+ `# {0 X4 a& n2 O
  13.             socket.onmessage = function(event) {) a9 d8 w$ B, J) D7 z+ w& v: L
  14.                 alert("Received data from websocket: " + event.data);5 x7 j. h6 y8 V3 O$ _' k
  15.             }
    * n# q( ?7 q7 `$ H. m8 ]9 I: x+ L/ E
  16.             socket.onopen = function(event) {- H6 \( o* W2 a1 c. v
  17.                 alert("Web Socket opened!");( e" K4 n% F. f# o( v( h  d
  18.             };
    ! E5 w! {1 q$ \4 N0 y" U
  19.             socket.onclose = function(event) {2 m5 E" J! D1 W' V2 t
  20.                 alert("Web Socket closed.");
    4 d6 I3 }3 \+ B; E/ g# B% @2 @  C
  21.             };$ M, e. V6 `  U1 E6 D& r, q% r
  22.         } else {
    4 y# z) x! n0 I
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    + `& x: L* j2 [9 d( `, J! T6 j- ]
  24.         }
    2 b9 `- h6 F( k

  25. 8 l8 v1 _6 M' a! V
  26.         function send(message) {
    $ y8 D3 \* g' Y
  27.             if (!window.WebSocket) {
    9 N  G, o& }1 B7 I0 X- s" h# B
  28.                 return;
    3 ~6 |, N' @% w' J; v. W  z
  29.             }
    ! F* _' o! K9 D  g7 r/ `# J
  30.             if (socket.readyState == WebSocket.OPEN) {0 F3 I% ~0 W. S# [! M
  31.                 socket.send(message);
    / L# ^% `; R8 w1 h: S* y
  32.             } else {
    2 Q" a! n1 N% k
  33.                 alert("The socket is not open.");+ }4 D2 N3 q+ O' o1 u3 `
  34.             }
    + E7 R! \/ B" A% V
  35.         }8 [6 Q! p$ C: P& ~1 X# x4 c& y1 @4 @$ Y
  36.     </script>
    ) b2 W- U% s: c% U
  37. </html>
复制代码

* \. K) f) U1 Z! z. I# Q* e- `/ }, W4 D& T; u; y- ^  u" _
: Z7 v. v" M: G: D! H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:58 , Processed in 0.053536 second(s), 22 queries .

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