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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14451|回复: 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");  
复制代码
6 X9 o8 x2 D! w

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
4 W  F: r8 }. L; x9 t0 R, ?6 G) r2 U( ?' u
( P2 r$ Q3 }1 A1 F+ K5 z/ p. O/ [1 Z
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开! e9 Q( T9 V9 }& ^6 M. n2 V& u4 P
  2.     }
    " e, C5 Y; b4 A9 C- _$ t
  3. ) m( Z1 }8 z" l* v
  4.     socket.onmessage = function(){& l2 W4 m5 a- t3 c. ^( ^
  5.         //在event.data消息数据
    2 f$ m. i0 {6 j9 B2 G
  6.     }
    ' _; V- ]) _4 v/ r; `2 ~; v( p

  7. : ], v6 r5 t1 ?& H) E
  8.     socket.onclose = function(){
    ! c* u% f* H" [& g
  9.         //关闭WebSocket8 P) h# \7 q, _3 L; k  p
  10.     }
    " a' p2 L8 W+ ?3 x, K$ x

  11. / F* z* E( [2 X( h: Q( K
  12.     socket.onerror = function(){+ s' [; H# I1 B3 \8 N0 g
  13.         //错误触发! Q8 |. `# u  ]( z0 g# x" @8 s
  14.     }
复制代码

8 A0 R; A1 P/ ^+ F( B# l5 j7 B9 N) E, n* a6 B9 f

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

  1.     socket.send(message)
复制代码
4 j$ n% z1 m% _, W3 [0 [% V
2 y- M& t: q4 ]

3 \/ a+ K3 _8 e, B

代码附上:

  1. <!DOCTYPE html><html>
    ! b7 A, v0 B$ w9 r7 T) \
  2.     <head>5 G2 P  Z+ f/ ?3 V
  3.         <meta charset="UTF-8">
    % F: ?4 W  }5 _$ m
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    8 ~6 D. u% W) M9 H! O
  5.         <title>WebSocket</title>! J/ E  {. P' C* y9 i
  6.     </head>- f& q6 k0 M: I: o+ ]+ I
  7.     <body>
    ' r. y8 ^9 E6 k1 t
  8.     </body>
    % n% ]9 i! t! }; c) t
  9.     <script>( x0 c0 S+ n! [, D
  10.         var socket;( i( _3 o( z' e
  11.         if (window.WebSocket) {3 B+ u+ P1 B! d8 g
  12.             socket = new WebSocket("ws://localhost:8080/myapp");, A. y7 Z2 t4 g& f
  13.             socket.onmessage = function(event) {
    2 {" h6 i( C% r" M
  14.                 alert("Received data from websocket: " + event.data);  }8 n9 q, @  P1 b1 `% @; o
  15.             }
    ! B2 _2 u2 {7 c1 w6 \  b' S
  16.             socket.onopen = function(event) {! T' X( C  y% t2 X
  17.                 alert("Web Socket opened!");
    # U- {8 k! |4 T6 @" H
  18.             };
    & c4 l+ [+ I& Q7 T% s
  19.             socket.onclose = function(event) {  a% e& K" F. v  [" s3 l
  20.                 alert("Web Socket closed.");
    9 P/ {, ~+ D$ j: a/ x
  21.             };: v4 A+ Q( ]* j3 Q
  22.         } else {, J3 @. C9 V2 G( D4 m* s
  23.             alert("Your browser does not support Websockets. (Use Chrome)");$ I& p2 U- x4 |3 N, k
  24.         }/ K. T) ?4 D' K# g
  25. 6 {0 z: h+ N+ D. {/ `' o; ]
  26.         function send(message) {
    1 |  d7 H+ r- T* W0 I$ j; s
  27.             if (!window.WebSocket) {- r- U% ~. U7 ?5 t+ E4 Y! O
  28.                 return;
    ) J+ O% X. B/ i
  29.             }
    1 `2 x! H5 f6 j/ _) e7 f  z
  30.             if (socket.readyState == WebSocket.OPEN) {
    - L/ o% ?0 H$ W! e5 j3 q) X
  31.                 socket.send(message);3 @* R+ a" Z6 E7 r% ^4 [5 O. J
  32.             } else {
    2 l$ N6 B4 C4 H: T& I0 d0 s
  33.                 alert("The socket is not open.");
    ) U  u( f! E1 @+ c. e# }' E; B
  34.             }
    2 h" [" d& }% c  V4 e( j
  35.         }
    4 }: Q" W' [+ Y" w
  36.     </script>1 U% X. {* ?0 B& ^
  37. </html>
复制代码
* F# C7 K# \4 l6 q  I7 P+ \

; p( d0 \$ l% ?2 L1 M1 I2 h
! f* w5 A& V  t7 S/ ]8 n' r- w9 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:00 , Processed in 0.055029 second(s), 19 queries .

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