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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14343|回复: 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");  
复制代码

) [3 a# a3 y( ~% |

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
6 I, [& H6 @  Z& H0 w
) E9 B8 ?8 S' I2 h; C/ ?1 c2 @3 M+ {( R8 \
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    . a  h% S  f& K7 i& h
  2.     }2 R+ B& Z3 F( p) x
  3. ; e, _0 |7 m: b. Y. D
  4.     socket.onmessage = function(){% k* w1 w3 |+ M* Z, P
  5.         //在event.data消息数据
      L" [$ w2 K; a: v% |# X& E# T, d7 c
  6.     }  Z0 j% F* K$ E) ^) M

  7. 6 {+ M. ~( i% A% \% m5 r
  8.     socket.onclose = function(){4 `" F' W" e+ O, H$ ^8 V5 w: b+ h
  9.         //关闭WebSocket
    - ]! N: K) P6 c6 u6 u* N/ Y
  10.     }
    , J  \& c1 p9 R( d4 q+ N/ t; l+ }: L
  11. " K0 {* c6 t1 q. P8 c$ i3 f
  12.     socket.onerror = function(){
    ; h; U- A- e  Z
  13.         //错误触发
    & X* x6 N" j, M: [& `
  14.     }
复制代码
+ l2 a. e- j- w
  M2 B( b' X2 J5 f6 R% a' W

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

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

3 {. f$ }3 D0 M. X( E# n9 a( K" L9 A1 ]( b

' r! v: t; F) @. }: \

代码附上:

  1. <!DOCTYPE html><html>: E0 q: [; K$ I3 S, A% s
  2.     <head>2 \) s' V, J0 G3 m3 x( F2 m
  3.         <meta charset="UTF-8">; ^, \) X1 G+ t4 I
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">- s' f! P( p. h
  5.         <title>WebSocket</title>
    7 U& w" m+ P+ G! N" N0 `& Q
  6.     </head>8 p4 ^, y' g7 F; N, u5 [( {( h
  7.     <body>
    ' u2 R5 o: u) E9 T
  8.     </body>
    3 E$ U  f2 V  p  K4 g7 [. b% G- x
  9.     <script>
    : p: O7 e, U; n2 ~% l& K9 Q
  10.         var socket;& L% O8 s" m1 G2 N+ Y
  11.         if (window.WebSocket) {6 H7 {- Q6 Y9 w4 t$ g
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    : h6 N) O) i! ^. _
  13.             socket.onmessage = function(event) {
    ! Z  t: I( [- G, e
  14.                 alert("Received data from websocket: " + event.data);
    % c" _0 a& |! J# a7 a
  15.             }
    5 Y* N& r5 ?/ {' o
  16.             socket.onopen = function(event) {
    / L! g0 _# V  y
  17.                 alert("Web Socket opened!");
    ' ^: V. r+ h$ e
  18.             };
    8 I" m) L- }: L7 l2 o
  19.             socket.onclose = function(event) {- q% R( I( k: c, X. n! ]; x- m
  20.                 alert("Web Socket closed.");
    5 \# S. h3 n! x# K: W8 s
  21.             };0 n2 s  h0 V. t- T  k
  22.         } else {! ?" y8 e1 J/ f* Z
  23.             alert("Your browser does not support Websockets. (Use Chrome)");* T1 q2 ~4 }' M( q& F: U" D
  24.         }
    & h* b# B& C1 b  p+ o" \

  25. % M) a' F, M! ^( P6 p
  26.         function send(message) {% g. _7 \: `$ y, ]
  27.             if (!window.WebSocket) {9 j. Q" C& {" n/ R2 q9 K9 n0 n
  28.                 return;9 H+ j. r1 ~3 J" V7 s
  29.             }3 U7 ~# S0 a  l6 ?( D
  30.             if (socket.readyState == WebSocket.OPEN) {
    * ~" U4 K* L% L& A- u; l  i
  31.                 socket.send(message);8 X6 f& U7 b, J' \1 `4 \/ h9 `
  32.             } else {7 ^0 P7 P0 _3 ?9 Y' H. |. ?
  33.                 alert("The socket is not open.");2 I8 [0 w, M  q1 j, z+ u
  34.             }
    ! T) W* W/ h8 |/ C, C! ~# J
  35.         }# E; {( o9 b3 S( o0 n7 {! x% |4 K
  36.     </script>
    $ ?9 E7 X7 G4 {% H0 l4 x# K/ n
  37. </html>
复制代码
: b4 q, V3 _1 F

$ f' G& C6 R  o
: B+ y7 x' d2 Q) P: F5 L  R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 11:39 , Processed in 0.054622 second(s), 20 queries .

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