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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14884|回复: 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");  
复制代码
+ G, c. N# F) c( `& o$ E

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
: X7 M7 r% h: |$ u8 O" k2 |3 Q' A! B* A7 J

2 L5 @5 X( i$ z! t& q0 X: b4 u该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    8 U# U$ O% q- t* v: a3 v
  2.     }
    - M- n6 @. i4 W+ T( ?
  3. 1 W0 a: I$ ^6 a6 C1 L9 Z; O2 L, l! f
  4.     socket.onmessage = function(){) S& S7 M) H; @
  5.         //在event.data消息数据% x: a8 Q6 x4 W9 X4 \# p2 g  F
  6.     }
      L6 K) C: [- C( O. v
  7. 8 X7 y4 |3 [4 {' g8 B
  8.     socket.onclose = function(){% S. [2 G/ r8 b# B' r! ^# R  l
  9.         //关闭WebSocket
    6 p: x" p& ~: Q( ]: `+ z7 A: C9 l6 K
  10.     }1 q0 b/ N1 u3 t

  11. 5 g" i& |! D; d
  12.     socket.onerror = function(){0 L, v' Y, W4 H
  13.         //错误触发
    * ^8 _6 e! y2 Q
  14.     }
复制代码
0 `/ z* K# R4 T7 F3 e! w; l$ g

3 k( L" p' N/ f; A  K% ^6 R1 k

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

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

, E3 j  Q' T( ], y, N0 p4 Q% L0 c$ G% m' F: _2 ]
1 h: L  h% i0 s$ [' V/ _  d

代码附上:

  1. <!DOCTYPE html><html>
    5 [) v# d6 B# p' j& k- p
  2.     <head>
    / B7 o, E9 S' G7 |  y
  3.         <meta charset="UTF-8">! S- Y; ?9 E+ q/ V1 |
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    " h4 f" y- f& I' ?+ [
  5.         <title>WebSocket</title>8 W5 K- W+ l. Q3 p+ P0 h  m
  6.     </head>6 s0 B! y2 N% D9 M) w
  7.     <body>% J0 U& m) m0 i6 S$ u7 ]5 m4 B- B
  8.     </body>
    ) k0 P- i* {- O& c9 }# ~5 w' k* T
  9.     <script>
      k( g3 j0 E& @# Z3 D4 p
  10.         var socket;
    ) _3 ]" f0 B, N" a, n* r
  11.         if (window.WebSocket) {; h3 o+ V; {1 ~; I0 @
  12.             socket = new WebSocket("ws://localhost:8080/myapp");) J7 Q8 R$ t  A
  13.             socket.onmessage = function(event) {$ s! [! Y5 X) q. @5 f1 D9 ~2 S  T$ w
  14.                 alert("Received data from websocket: " + event.data);; D- B3 {# o' k. L' u. I
  15.             }
    ( o% O9 `1 b* [3 E5 X; M/ J9 s
  16.             socket.onopen = function(event) {
    . h" E" s; W$ \) p, |% E
  17.                 alert("Web Socket opened!");8 Q: j0 s0 u, ~. P% O' @
  18.             };
    & B! r3 h1 K( Z, @: {6 ~% c4 ~  I
  19.             socket.onclose = function(event) {
    % g5 Y( h' s3 z2 b7 A
  20.                 alert("Web Socket closed.");' }( D% s/ T& x. N3 o# n
  21.             };) ?# Q: u0 B4 f3 p4 L
  22.         } else {
    $ f% _& G- I) w( x6 g  I% ?
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    3 @+ {, Y3 K+ W$ G2 t- {
  24.         }
    * i4 G) z( [/ }$ w: T4 \

  25. : x3 S8 ^+ p3 i9 Q3 T
  26.         function send(message) {1 f! Q6 a7 O3 Y
  27.             if (!window.WebSocket) {! J3 c( r2 w- ^( V: v) ~7 F! ?
  28.                 return;
    ( b' k, {7 o# Y3 E: U' n. U
  29.             }
    / q& s4 r7 u2 l/ ?/ d
  30.             if (socket.readyState == WebSocket.OPEN) {/ O' i, u+ \- k2 T/ B
  31.                 socket.send(message);
    : i6 a, t  d* H3 g2 k" s4 g
  32.             } else {
    ' @0 c4 ^: D( D0 T( N
  33.                 alert("The socket is not open.");
    : Z+ \  H/ ^) R( Q6 e
  34.             }
    7 f3 }5 [' i* W
  35.         }
    ! O9 e- o. i! B$ A
  36.     </script>& C% ?3 B. D/ X& m* l) ?6 X) X
  37. </html>
复制代码

& a$ {  \& N& u. C9 ~* Y
" c9 x0 t( k/ J
) a: |/ x3 v) |. Z* p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-19 22:44 , Processed in 0.057190 second(s), 20 queries .

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