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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15791|回复: 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");  
复制代码
" d5 |$ J+ b$ `* G- ]# @

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 / u2 P! n0 q& W, u
+ q7 B+ I5 M- h5 k
1 \% @; d$ v: b1 U
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开) z+ ~) M5 r) d- V  n& `, J* n
  2.     }
    & {5 T. [2 S  ~) V; h2 C

  3. 6 I5 @3 X  F  J% l( e. \3 Z& q
  4.     socket.onmessage = function(){
    ! y) P3 f& [7 D2 F5 R, T2 n
  5.         //在event.data消息数据+ [) Z# a1 k( b" O$ w+ `  J' r
  6.     }& ^( T$ Z3 @4 N3 U" Y: U' H
  7. 1 n  ?. I+ T% G2 P+ T
  8.     socket.onclose = function(){0 T7 C: K1 n; h- N# {; g$ h' @
  9.         //关闭WebSocket) k. q$ ^- L0 @
  10.     }
      W- }2 A. n) @0 f+ Y" Z" e. J

  11. # }& r2 t+ t! V' f
  12.     socket.onerror = function(){* _, B( a5 L. C" m& [) F0 T" v
  13.         //错误触发
    % U7 ?' ^1 T1 e" \0 }
  14.     }
复制代码

& X" |- f7 }& W! ?3 @
* U3 g" G  A. r

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

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

) J* n& t  K% v$ E3 a! }3 d  T; C& l7 s! C% X3 d% ~$ q

5 a6 d4 |6 q: ?% w

代码附上:

  1. <!DOCTYPE html><html>
    4 `7 y; K2 f7 c, u$ L
  2.     <head>
    ) _5 z( b9 _% L& h; e  R
  3.         <meta charset="UTF-8">* I: n: w" D& U( \$ \% N3 O
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    6 H' n- h* y$ s  h  M& T) N
  5.         <title>WebSocket</title>
    6 j' V* P: P  V+ }7 {* f
  6.     </head>
    $ r6 d& w3 ?( [" G) z  Z4 }# {
  7.     <body>
    4 G7 }, c- V" t
  8.     </body>
    7 r$ A+ Y  v% C4 x5 G) o
  9.     <script>
    ! E) h4 p7 M4 u" a3 m0 N
  10.         var socket;
    ; Y4 H$ ^- Z% L0 f# S; H
  11.         if (window.WebSocket) {* f) S3 |; X3 p- l" q  \4 R4 M4 F; X6 {' ?
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    : e1 V% X  E( E! g8 l
  13.             socket.onmessage = function(event) {
    4 n; ~) b% ]8 I
  14.                 alert("Received data from websocket: " + event.data);
    3 D; N( H8 m( ~, c5 y  C
  15.             }
    - G& m0 F6 F- s! q0 P
  16.             socket.onopen = function(event) {, g' o( a7 R- ?" _  T3 Y, ^2 X
  17.                 alert("Web Socket opened!");+ y& ?  r6 t: H. s! D  B; z9 B9 |
  18.             };2 M" a8 _* z4 o- Q. |) f; N0 q( ~
  19.             socket.onclose = function(event) {: @) P% X0 Z/ h2 L$ z, D
  20.                 alert("Web Socket closed.");
    1 O) {% o% G; J  r; s( S- ^. v
  21.             };4 T% Y8 q. j5 N% L
  22.         } else {' |3 M2 v" v4 b) l( E: ]9 U
  23.             alert("Your browser does not support Websockets. (Use Chrome)");3 G# Z% A2 U9 ^9 [' s, F7 l& V
  24.         }2 _5 E4 ^. v" O2 {5 `, M

  25. 3 t: ?6 Y( @: b' T% o9 I. |9 D. z; R8 P
  26.         function send(message) {
    4 P: j* W& l! A3 Q, j- P3 Y
  27.             if (!window.WebSocket) {/ o% \' y# K3 k; c6 A4 y' T
  28.                 return;
    : z1 Y0 u5 D% d) R, f9 O
  29.             }
    4 ^. }$ U% U+ N7 F" m4 A$ [5 f* c5 v
  30.             if (socket.readyState == WebSocket.OPEN) {( V+ b, W, _% D+ }
  31.                 socket.send(message);; E2 G& ?  F; A6 D: E3 W2 q
  32.             } else {
    + p* D# {! s; N
  33.                 alert("The socket is not open.");: I2 c: A0 Y1 b( @2 S; F
  34.             }
    : m3 E8 b+ @' }/ `$ N' l1 v
  35.         }* r4 w) D# P" Z& v& ]( r
  36.     </script>1 M& T; e9 ]5 V
  37. </html>
复制代码

' h; H5 G& H: i' O: t3 _8 j( b7 d* K6 z" ]6 K1 I

+ i9 i! U8 f/ ~  ^! q8 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 05:20 , Processed in 0.055110 second(s), 19 queries .

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