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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14439|回复: 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");  
复制代码
7 x7 N. j4 u+ l7 W3 W

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 5 i2 h' _& b! j7 L- Q: Y% x; K6 E
* d; z6 O6 I* `0 Q
6 E, p6 |6 W& I& S/ _! [+ o, C7 y
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开% x+ V5 p& W/ U* p1 t9 m1 M
  2.     }
    ) B* o1 Z8 G- |* f  X
  3. ; q4 N* r5 n2 V, I; m6 e# ?
  4.     socket.onmessage = function(){  |1 r  X$ g" _$ ?
  5.         //在event.data消息数据7 F1 \6 j& W7 [' f! E
  6.     }+ p) o  ^- t; A, L% ~

  7. + L% v+ _) U9 }5 z/ [
  8.     socket.onclose = function(){
    + \. L1 T: [: v. |8 }2 s
  9.         //关闭WebSocket
    0 g, a* T" b; B( T1 u0 X/ C
  10.     }
    8 k( z# [$ O6 a, x
  11. , C0 R0 w' E: t0 Z4 e; W4 C
  12.     socket.onerror = function(){
    5 X1 S* C* _" p: e, X; l8 e
  13.         //错误触发. D" M: S+ {( z! ?" R/ S) n: E
  14.     }
复制代码

+ c6 M, L9 y2 [6 b
2 O& ?8 H, z' \# d) ]; ]' d

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

  1.     socket.send(message)
复制代码
# e1 w1 a0 n/ F) X0 c* G
7 w; C5 ~. k8 G$ S" _. ~9 s

1 K  t+ \- m* B# ]0 o

代码附上:

  1. <!DOCTYPE html><html>5 c* ?& H- O# V8 |' i. ]6 I5 a
  2.     <head>$ K/ x5 e* o- _( Z. K
  3.         <meta charset="UTF-8">
    1 z" x# ~4 e, {8 U5 G1 ?( f5 f
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">8 D; I& n5 D6 l7 j8 g" m
  5.         <title>WebSocket</title>/ F: A+ Y+ Y7 Z* f' b
  6.     </head>5 P6 }1 C5 k0 F! X$ W
  7.     <body>
    $ y  c6 d. `2 a1 T: y
  8.     </body>5 A1 i+ k1 B# d
  9.     <script>8 r. ]; C6 i$ V# i% B. o
  10.         var socket;0 g1 H: Y8 X0 G% i
  11.         if (window.WebSocket) {
    ; k' m* X. N2 w. ~# m
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ' J8 o# y4 J* `$ r* y
  13.             socket.onmessage = function(event) {
    " |- ?5 v  @' y& I9 W) k: i
  14.                 alert("Received data from websocket: " + event.data);
    : u. b1 J' N* ?+ C3 H& R5 P
  15.             }( @/ d8 _3 L( q/ f5 Y5 x
  16.             socket.onopen = function(event) {
      U& T4 m4 _& ]3 d) l2 W- O6 Y* l
  17.                 alert("Web Socket opened!");
    9 O/ _# P7 O; X8 N
  18.             };+ T& y- o, H1 ~& H' |! |; }) R
  19.             socket.onclose = function(event) {: B. }. v: n# G4 G+ k; x1 `  r
  20.                 alert("Web Socket closed.");
    ' g! R& m% G! }6 Z
  21.             };' R. m' t* @! C# M$ M7 p! o  |$ X9 o
  22.         } else {
    ; d. n: M+ t# Q  t8 @8 y. X
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    - l2 [& q" ]; }, M: `
  24.         }' N) K( r1 H4 n4 v, R
  25. 4 p% Y4 l7 A4 C. V# D% P
  26.         function send(message) {1 j/ z4 j, s+ u& v+ w3 W1 b
  27.             if (!window.WebSocket) {4 |: L0 U7 o9 j. g2 R
  28.                 return;. S- O: _& _5 F9 l0 F3 E
  29.             }
    ! ^5 p( k. X' g- u3 g
  30.             if (socket.readyState == WebSocket.OPEN) {1 h( Y1 c) D% z& }) T+ Q
  31.                 socket.send(message);; w# O; m  i, X3 ~9 v6 m/ R% W2 [: F
  32.             } else {: I- _% ]" b0 U$ ?9 S
  33.                 alert("The socket is not open.");& \8 w6 b9 T( B
  34.             }0 e; T9 }$ K/ T: n4 Z# ]
  35.         }+ W4 X1 a( J  `& N1 A# r
  36.     </script>
    4 T* l1 Z; i7 B& ?  @7 I
  37. </html>
复制代码
! |& i" L8 x& V0 e0 t* c" q( m6 R
3 z! g* E9 x. G
5 h! q  }- I3 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:24 , Processed in 0.104499 second(s), 20 queries .

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