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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10514|回复: 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");  
复制代码
2 v* o5 y4 r3 \8 C, Z# {

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
8 k5 M4 @  C+ @/ b; e8 L8 B' f# K2 S* J" m$ C2 q3 N

- R( \" y2 V% @  k$ Z该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    + n3 ]/ F. [) S
  2.     }
    6 n- I2 O1 m9 v: X
  3. * u3 }6 d% E& H0 V% w" {6 I
  4.     socket.onmessage = function(){- m3 ~" n! O' Z. x# w4 x. X
  5.         //在event.data消息数据# e% W/ N7 v" t: z8 j$ k# h% T1 ~
  6.     }
    6 f1 ?7 y* b( |8 H9 H6 v$ V8 S7 U

  7. , c4 `* x% I* _' c- A! E
  8.     socket.onclose = function(){- J' E1 L; P1 S' {' U% Q, U
  9.         //关闭WebSocket
    7 V+ Q& D5 S1 }( _" `  \
  10.     }
    7 P9 n* a3 O7 p5 z9 W

  11.   }# t: t- r& J" J
  12.     socket.onerror = function(){
    - n: R+ F$ y# M* C" f
  13.         //错误触发/ ^8 O* m# N" K/ }6 ~/ m6 t
  14.     }
复制代码
1 X1 W8 k# @* v: [: z) D6 L3 E
4 k) Y5 p$ |4 V/ m

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

  1.     socket.send(message)
复制代码
- q, {* a6 I, }- N1 `$ ]. p7 G0 Q
, X/ u' {( t4 T
7 }* n6 S: G$ p( z$ g

代码附上:

  1. <!DOCTYPE html><html>2 k) {% A$ s# Q9 U
  2.     <head>6 @. X1 z& r0 L/ y5 Z
  3.         <meta charset="UTF-8">; b5 C/ ~4 r' c$ r
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">) o7 [/ u/ }6 \# z
  5.         <title>WebSocket</title>; P1 l) `+ V9 N" I/ v7 I9 I) I& r% W
  6.     </head>  x% j6 v# {4 ^- H. V
  7.     <body>
    0 O7 R- x7 Q1 R) ~; `: l$ X
  8.     </body>
    8 R- d5 [0 g$ ^9 x& m# t% B
  9.     <script>
    * S5 n1 ?4 n* n2 i0 i! C: J3 a1 e& g4 @
  10.         var socket;! m5 P/ r+ v" u) O
  11.         if (window.WebSocket) {- i# q" D  g' \+ X
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    : W' C& t5 s1 B. j
  13.             socket.onmessage = function(event) {; f% [3 ?& p% @* L" c" N; X
  14.                 alert("Received data from websocket: " + event.data);5 Y/ }4 n! s1 j" ?0 V6 a
  15.             }
    0 i( c- ^  c, j; Y2 r
  16.             socket.onopen = function(event) {
    " J2 C4 b/ ^$ p7 C4 D
  17.                 alert("Web Socket opened!");; s$ s2 Z# _0 I, K4 t" v
  18.             };
    5 d  y+ w1 A$ Y$ H7 e: I; i4 Q7 m2 o
  19.             socket.onclose = function(event) {
    0 m2 k3 g* e6 _" ], j
  20.                 alert("Web Socket closed.");4 ?$ Y6 \6 b& }' r$ {0 s
  21.             };
    ) d+ s7 U: ?' S$ }( y
  22.         } else {
    8 @/ C! @6 i/ X' }6 M2 [
  23.             alert("Your browser does not support Websockets. (Use Chrome)");) M8 b3 L. v( B1 L7 a# C
  24.         }% B  N% X2 s0 I! }; Z9 v
  25. ' z) Y8 k+ F3 B' t0 b( N
  26.         function send(message) {% m; |4 M( V% m3 z( e6 f8 V
  27.             if (!window.WebSocket) {
    ! p" u( Y9 `+ k& d% k
  28.                 return;2 g( Q; W1 w2 ~
  29.             }
    ( h7 r/ W! S0 \) W# d0 T* B
  30.             if (socket.readyState == WebSocket.OPEN) {
    1 Q7 q5 [/ f6 g( q
  31.                 socket.send(message);
    8 x- X; E6 V0 M/ f
  32.             } else {$ P4 f! s8 L" e& |
  33.                 alert("The socket is not open.");1 w) S, n1 ?; v1 O8 o
  34.             }" |& A8 f- B. I+ `8 ^
  35.         }6 o/ V. P2 D1 l0 B3 f
  36.     </script>
    " V, y! w! z, @: e' _
  37. </html>
复制代码

- |7 `1 K" v7 a( a! H4 R2 i
- K  N: }3 t7 N; J# w  l, Y  D/ w& {- `5 R- c! h- L7 K! t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-27 02:54 , Processed in 0.123107 second(s), 20 queries .

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