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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14342|回复: 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");  
复制代码
" m8 {- ~- E3 f2 D. O: c2 Q

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
' V, K" H9 ^, ?7 r9 D7 @3 c! H  F/ ?$ S1 Y7 @" {* H2 N

5 F' S% C  M, N8 X5 z5 }' @/ K, d9 Q该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开- `5 k0 i5 y! N5 \) u
  2.     }6 E4 w: ?# O: C4 |+ r

  3. & R; D. m/ u3 |. G4 x
  4.     socket.onmessage = function(){) U7 X) J. c& H; C  }
  5.         //在event.data消息数据7 y5 D, ^9 S& F: {) w9 [
  6.     }
    * h% f; m4 t$ e6 i
  7. & u+ I# l- n  ]" P
  8.     socket.onclose = function(){. x/ H' S4 t* Q6 R4 a' g; M' O
  9.         //关闭WebSocket. b0 q! K! v& i: b
  10.     }7 i( N; b9 @3 H- `1 t, z3 k1 N

  11. ( K, p: x0 ]  x. n
  12.     socket.onerror = function(){7 `/ m4 w6 M2 [3 k: S; v7 g$ @5 x
  13.         //错误触发
    ( a3 w" o) {; n
  14.     }
复制代码
7 ]' f8 E: ]; b9 ?
' `; S( Z& b4 {1 n1 N1 x

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

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

' S: I0 t; ?' s  p1 u  W; D# ^+ u1 v* O! G! s+ [3 B

# o- X. l! ^3 X: ^

代码附上:

  1. <!DOCTYPE html><html>
    / d1 q% K/ d+ K! m
  2.     <head>( B5 @1 q( X; ^9 @& N6 ?
  3.         <meta charset="UTF-8">
    # T5 a( N4 i+ a8 |% Z6 [) `" ]
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">  Q4 |$ ]6 @' I: L; Q- h+ M
  5.         <title>WebSocket</title>; I, U! Q6 [' ]2 Q, y9 k/ H
  6.     </head>
    8 D: X& C/ e# y9 D2 E/ c
  7.     <body>8 c9 E% Q' ^8 {6 H3 o: N  S5 m# j* ]
  8.     </body>4 Z3 p2 B5 b6 f, E0 i3 e) \
  9.     <script>0 K. e  K+ H* N7 D$ e
  10.         var socket;
    $ b- z1 @0 p" o/ c9 o
  11.         if (window.WebSocket) {
    6 @8 s4 g# d. }
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    8 X$ F* V9 ~+ u. `
  13.             socket.onmessage = function(event) {
    - A/ k: j- K* b7 Z- B; ]' Y! P4 f
  14.                 alert("Received data from websocket: " + event.data);1 \0 ?/ g; _  C  t8 L$ t
  15.             }
    7 [  ?. L4 i$ ^- X% o: u
  16.             socket.onopen = function(event) {( t' ^8 g1 W, G' h' z% i
  17.                 alert("Web Socket opened!");% M% X& f" C" m9 r- U- Y
  18.             };
    7 Y1 T5 L5 O4 V: N* v
  19.             socket.onclose = function(event) {( Q( w$ z& j4 @9 c
  20.                 alert("Web Socket closed.");
    4 p7 s( U  v9 U0 |1 Y  B
  21.             };
    ( U6 W. i0 `' G* y8 F! m
  22.         } else {
    4 U' T  v% K% x( q1 f- {1 e
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    7 v2 k9 H% Z- j4 `: A6 O
  24.         }5 Y. A6 s& w8 F) ?' p; z, |, q
  25. 2 o5 I4 B% l3 p- r9 d3 c
  26.         function send(message) {& _: l  ^7 I" [! i7 R) U
  27.             if (!window.WebSocket) {
    4 G7 V- Q$ H5 D1 c4 b1 r/ w! z
  28.                 return;
    % k$ P  {/ b0 |! e: Q
  29.             }
    ' T8 p0 r) D0 |% A
  30.             if (socket.readyState == WebSocket.OPEN) {
    % J% ^' C' {' V* V5 f" P
  31.                 socket.send(message);
    9 _4 D1 p+ O, u1 p, Z' n, g0 G: d
  32.             } else {
    ; Y0 b& ~' G9 w4 Y$ z5 m9 Q
  33.                 alert("The socket is not open.");% y! e' J' I2 h- v/ P: f! r, n" e9 N
  34.             }; u. v( c( E6 V2 E0 ~1 k( Y. z
  35.         }: u( \* K0 b/ w0 `# e# S. n/ O9 S6 H
  36.     </script>8 |# p9 c# K' V( e) q
  37. </html>
复制代码
( x- M3 |9 d- s% U# D. f
( c) K/ p2 D# D/ U
6 s7 M1 ?2 L( R# B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:36 , Processed in 0.053193 second(s), 19 queries .

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