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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10016|回复: 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");  
复制代码
: n7 p- U3 v( V! X( S; _3 E

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 8 x7 k% K/ ?8 ^8 f
, X/ n6 T5 p7 V! S3 s6 i

% L% g3 e" |, y9 l该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开  y3 N! n3 I# n/ [
  2.     }
    0 l8 B1 X) t4 k  w( w  W4 V  D

  3. $ b% F1 T. o0 F7 P
  4.     socket.onmessage = function(){& e- |5 S" @0 a% F4 ^% ^" g, Y
  5.         //在event.data消息数据3 ^* ~0 e7 v( I' p. T
  6.     }! u( ?9 q, r/ I# t. W& H  q
  7. # U  g; k* W* E! r( e% o
  8.     socket.onclose = function(){
    * f. H$ J9 R$ H; A8 W7 |. [
  9.         //关闭WebSocket$ \2 E; A" h* Y% ]7 a1 O4 |
  10.     }* R) V+ F& C1 d  \

  11. - D/ v. d. d8 j8 ~7 M8 O$ c
  12.     socket.onerror = function(){' E) C, r' X3 E
  13.         //错误触发0 ?3 L+ P1 m1 K
  14.     }
复制代码
3 P  L! C, c4 W. t
/ V8 M/ O5 m% U% |% z7 k3 B  i

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

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

' `/ p2 y0 Y4 ~% @4 k/ m+ F
: A1 Y- T  Z5 W1 \6 Y/ Q) I# V, G3 N! ]  `7 F

代码附上:

  1. <!DOCTYPE html><html>
    9 _+ F( v6 H! P( t4 U/ P6 m) y4 e- R
  2.     <head>
    # ?! ^; X5 q1 \! b. @2 k- |
  3.         <meta charset="UTF-8">
    , H1 q  {5 |! U# j
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">( G9 E" n! E6 N* b% |" d
  5.         <title>WebSocket</title>) j5 `6 N: [' \7 ~% E
  6.     </head>+ N! _* a3 M# [: Y0 P0 G7 ^
  7.     <body>
    ( y5 F5 m8 ^8 U" y3 |5 D3 j
  8.     </body>4 g5 p( R8 r1 R* v; K% r5 }
  9.     <script>+ H  i2 w( U8 R
  10.         var socket;
    8 G( p1 o$ u5 A# q% r+ N& l/ e: V
  11.         if (window.WebSocket) {. K3 b# I* c7 o
  12.             socket = new WebSocket("ws://localhost:8080/myapp");# m) ?: w3 B" V, \- ?
  13.             socket.onmessage = function(event) {
    ; N" Z7 v, M+ a! k; k9 v* L* {
  14.                 alert("Received data from websocket: " + event.data);
    ! F" c8 _5 l, s4 G; p% W
  15.             }
    ( y, b+ r, H9 s3 n5 f
  16.             socket.onopen = function(event) {8 o+ I# C# C' H) V' y
  17.                 alert("Web Socket opened!");, q5 J8 a/ H: \/ b
  18.             };8 M" {* G/ R2 g. Z( }3 F
  19.             socket.onclose = function(event) {
    6 C8 t) L& [2 C
  20.                 alert("Web Socket closed.");1 \3 B9 n5 W( q) X3 p5 a! Y* D1 V
  21.             };
    ' o' q- d( m  p% Y
  22.         } else {* X3 @# [+ l% X
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ) m* ?; q$ _8 Y5 x% j3 [: r) }0 i
  24.         }! b' N" o2 h/ I- K

  25.   E7 g! _+ C  {, j2 S5 |% l
  26.         function send(message) {5 f8 N) Q1 Z0 U. p2 K: n. H$ Q
  27.             if (!window.WebSocket) {! x7 @" [6 o( J, u% B( E
  28.                 return;% b$ X; q  K& ~
  29.             }
    2 j- i; U2 o6 _! v1 O+ x/ H8 a
  30.             if (socket.readyState == WebSocket.OPEN) {
    / T" ?( _1 |# L! `' y9 Z7 o
  31.                 socket.send(message);6 h/ j9 |/ }/ O2 B) v( M
  32.             } else {
    , @7 A# g# j: v8 l. {3 k, x  Y! a* C
  33.                 alert("The socket is not open.");
    7 \" n0 r+ p; C3 `4 Q! N' l4 u$ Q$ |
  34.             }
    0 R) z( P1 N; S5 Y4 k
  35.         }' `5 X9 r! c6 v; y+ {9 r( ^9 A
  36.     </script>' H! }" _, g+ `& T  R  l
  37. </html>
复制代码
( q9 X0 y! M5 \# p: {. ?) J

, V6 ~) Z% i( d; }8 J
  v. D& k% v0 T# N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 16:01 , Processed in 0.122391 second(s), 21 queries .

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