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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11590|回复: 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");  
复制代码
# W! b7 k, G# ]1 U

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
. I, u6 o! B  s
8 I$ H! N( a- \' K" g
3 ]; L- P$ T2 D该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开, @' t3 q- Q$ w
  2.     }4 v: w; r! G4 b# s9 K2 i* I/ M3 K8 B
  3. 0 j8 ?6 H+ u7 ]3 b/ n  K0 E
  4.     socket.onmessage = function(){
    4 ~1 m! t6 O. N% c
  5.         //在event.data消息数据8 K$ v5 I& z+ b* v6 e) G; w
  6.     }
    0 d# o* ?1 a4 q( k0 v! P, k

  7. + H, p1 o6 }7 g! d+ k* X
  8.     socket.onclose = function(){; Q2 W% }& d2 p/ p
  9.         //关闭WebSocket3 h/ H) O6 y1 g' P3 b6 j3 M
  10.     }6 P+ |; p2 @7 {

  11. & X( u9 \7 U' U, Z
  12.     socket.onerror = function(){
    " R' C( H/ L' m3 x: B
  13.         //错误触发
    ! g9 r' ~  [! Q! Z) @: ?7 l* A
  14.     }
复制代码
, }4 Q. E9 l3 q) E/ F

! Y7 j/ ^3 ?( S5 s% y: H2 Y

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

  1.     socket.send(message)
复制代码
0 i7 W" G' W9 D; h% K# _' }" |3 g- W

7 c  [: Q3 N. @6 K2 b
  I$ p- x. H( T

代码附上:

  1. <!DOCTYPE html><html>7 e* b9 o" Q* U1 ]
  2.     <head>0 V1 ]7 M& A* U9 V% ~! Q7 N
  3.         <meta charset="UTF-8">5 J$ m+ J; k  S2 ]6 B6 e& G
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    / U7 _6 {3 o9 i3 L: [$ X' F
  5.         <title>WebSocket</title>1 z& W' t0 o) H& U* ?$ t
  6.     </head>
    8 j7 Z5 \6 u/ X' Z' x" @
  7.     <body>
    0 j8 J' x2 d. g' ?' a) a7 `, J
  8.     </body>" j$ r( q! G9 _7 C( g9 W9 m3 ~
  9.     <script>
    8 r% i, A! K4 `/ x' K9 O/ T
  10.         var socket;
    3 m! p# L4 S) d$ g
  11.         if (window.WebSocket) {" G( s" z6 v/ y5 `# w
  12.             socket = new WebSocket("ws://localhost:8080/myapp");1 p; x- r# b+ P( a9 j
  13.             socket.onmessage = function(event) {
    - G/ a5 ]2 k* M$ l9 t9 h
  14.                 alert("Received data from websocket: " + event.data);+ v$ T0 U. N5 l9 w
  15.             }
    2 M: j. x' L- X/ f; W! X9 L
  16.             socket.onopen = function(event) {% g2 b% `( R/ u9 ]  A
  17.                 alert("Web Socket opened!");
    0 y% M! d1 p, K6 d9 @2 |. D
  18.             };5 p% l1 g, W3 m% b
  19.             socket.onclose = function(event) {5 @/ M& ^* V8 O2 N0 _4 H
  20.                 alert("Web Socket closed.");
      x! H) U8 E7 P+ }! {2 i$ h4 T
  21.             };: m0 Q4 `, ^0 k; b/ \' h/ L
  22.         } else {( ?, a. B" A2 c) y' M
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ) A- w0 p' e. U- |0 f( y
  24.         }5 Q; ^& |, z; @0 D6 Q) d
  25. 1 o: W: t2 `) y& w% q
  26.         function send(message) {
    9 |0 Z! I  R) H) q. A1 W4 F
  27.             if (!window.WebSocket) {- i7 R, T8 J3 H; F6 s4 ^
  28.                 return;% c+ g3 M. q' H! k: u( I
  29.             }# F4 h5 Z6 v) {7 z
  30.             if (socket.readyState == WebSocket.OPEN) {  k" b1 R4 C7 z
  31.                 socket.send(message);7 U& j4 Y% g" y
  32.             } else {1 t! H: B* [, ?6 T: S, K1 d" ?* x
  33.                 alert("The socket is not open.");
    & z0 \# E  B* g5 M. c% @
  34.             }
    1 y% ?0 t# e) G1 |
  35.         }5 o2 }9 F: n1 k6 }4 D4 |& s
  36.     </script>4 D) D' ]( {# F0 P( c/ Q9 c9 w
  37. </html>
复制代码
0 `  K' H0 C% y# A, v9 `& N
& h& F& p1 J) J+ o

4 J7 [2 v9 m3 ?+ X8 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:03 , Processed in 0.109984 second(s), 19 queries .

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