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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

% a+ V) J. b: u  o6 s% w5 K/ v! A

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
- \$ \# s' p  T: d! [6 Z( ^! ~) {# z" L

. m& R5 F3 b+ R. D该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    7 g8 c7 [( k- z2 a! g: j$ ?, q
  2.     }
    1 Y' ]$ v- l) h

  3. 1 S) C* k  W) G0 p  d
  4.     socket.onmessage = function(){
    , q( o, [) K0 ~# o  \5 G+ Z
  5.         //在event.data消息数据9 Z7 V" L. x8 Z% ?3 P. o6 o, d5 n
  6.     }7 V6 S0 `) e& y' x& R

  7. ) p9 K# W6 |* @
  8.     socket.onclose = function(){$ t8 a3 L- N, i5 ?8 L3 Q+ j0 _
  9.         //关闭WebSocket
    1 E6 N+ I  K/ F( Q( O6 w9 a( i
  10.     }
    & y) w+ n& K" Y

  11. 1 f' u$ {3 I+ q, L9 o% p' K& ]
  12.     socket.onerror = function(){
    1 l, d! r+ E5 P1 Q8 O% r
  13.         //错误触发  q2 J7 ?! [1 X
  14.     }
复制代码

& n& H7 d$ X- \. W
, s3 D2 b: Y4 ]8 n% o3 }

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

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

2 D, A" @" s- O& ^; S  P- P+ ]+ D/ T* _5 u# n2 t6 h! S

. e) U+ d( F& x# A5 B, U+ G! T$ l

代码附上:

  1. <!DOCTYPE html><html>( O9 s* u9 z6 s$ C
  2.     <head>% S5 i7 c3 }4 v" f' ^
  3.         <meta charset="UTF-8">
    2 i( p$ S1 ^' y9 k5 y# X/ E  W
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">" T( m# g0 k" A- e. j5 D& N
  5.         <title>WebSocket</title>
    - i; f. s4 ]' ]9 u) K
  6.     </head>3 @* F% }/ c! F
  7.     <body>7 A0 \1 A; K& G, c0 \6 V
  8.     </body>
    % c8 J9 X  F0 z  S0 k# U; W
  9.     <script>7 p! L) f- o. M2 C/ D' l
  10.         var socket;
    0 R( P+ {1 }8 g, b$ X
  11.         if (window.WebSocket) {+ O# H9 J7 B, N+ r2 S. _- T5 x
  12.             socket = new WebSocket("ws://localhost:8080/myapp");/ ?( w+ M2 A% r6 ]
  13.             socket.onmessage = function(event) {
    4 l) R9 D* }* [* u: p9 W5 E4 c
  14.                 alert("Received data from websocket: " + event.data);
    " P$ F4 u: l" `, E! \% z
  15.             }
    / l& r% W" B/ K% }3 }$ o3 R9 `
  16.             socket.onopen = function(event) {. Q7 o# u  [2 P0 T. T  U
  17.                 alert("Web Socket opened!");2 _- m. l4 h0 u) P. S) ^/ j
  18.             };' F( R2 H3 S4 f) b
  19.             socket.onclose = function(event) {
    , ^+ I$ y; \  V! W- c- T
  20.                 alert("Web Socket closed.");
    - n1 f( a+ ?! g1 }# E+ p( V
  21.             };
    ! Y9 _7 K& |0 D+ ?1 b' H
  22.         } else {
    ' |2 m' s/ X8 u. f
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    3 S& A. u6 K0 @( u" r
  24.         }; _7 L1 p2 j" g) a
  25.   g. z/ k$ K4 {
  26.         function send(message) {
    7 m. _' I+ W7 h, Y" O0 _
  27.             if (!window.WebSocket) {" f! w0 E# ~/ b$ w/ g
  28.                 return;
    4 h. \; |, N+ ^* D: l2 v3 s
  29.             }6 `4 _: p6 J/ x1 y( N4 v" J& c
  30.             if (socket.readyState == WebSocket.OPEN) {
    4 m: s6 f! C+ x: e; J
  31.                 socket.send(message);- |6 t% |* R( Q: o; Y( e/ }: b
  32.             } else {- Y0 b+ d$ U1 k6 i
  33.                 alert("The socket is not open.");
    $ i, Q. G+ j- t! {+ N2 _+ Z
  34.             }! g6 P8 [2 |. ~. t! f% ]2 I
  35.         }# r) {/ F- C% O! M1 H* g  z! `1 s
  36.     </script>9 _7 f2 r$ x: R
  37. </html>
复制代码

% D3 l+ D/ d4 g
4 i  a0 s7 R8 C2 \0 t' K- \, O4 `3 Z) Q7 }: n- Z" v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:41 , Processed in 0.066563 second(s), 19 queries .

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