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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

6 h. n# T0 W' ^, z& A4 F

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 9 j, v' q; a, w( A3 |; n- s$ }/ a
* f& S, K# U, a8 n1 _$ I) d: E
# D8 K5 w7 ^# f( h! B1 W$ H3 f
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开! Z- V. I- z) N6 O; A: O+ _0 c
  2.     }' Q9 u- a, `+ }# c0 r
  3. 3 v+ G. o$ y' F$ N) ^
  4.     socket.onmessage = function(){
    9 _; V) M) e6 a  M$ r4 n" z& @
  5.         //在event.data消息数据
    6 j- x* J" V" Y) s/ f) `
  6.     }
    ) a4 d# G9 K/ I/ o

  7. " f, i9 o% L2 M
  8.     socket.onclose = function(){- U0 m/ v* N8 _( c
  9.         //关闭WebSocket
    & d: U* X* A. Z* b
  10.     }
    9 t% m( C* z4 c8 E* l  }! O
  11. ( [. ~1 s5 o5 S. g9 U8 n: L6 B* k  m
  12.     socket.onerror = function(){
    4 G% O' z5 l- e( _/ y; a" o
  13.         //错误触发3 e5 y, R" @" C) I
  14.     }
复制代码

- ]2 m' o5 o$ Y2 z2 H# Y: d; d) G2 m

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

  1.     socket.send(message)
复制代码
8 y2 q. c' Z2 o& m  g

, M$ ]# d: Y  j4 l% E8 @. P/ m: j/ C! w% t5 ?

代码附上:

  1. <!DOCTYPE html><html>
    % E+ X0 M! P, Y* T9 z0 ?$ j, f5 N
  2.     <head>6 y& A; ?: c% }  Q+ z6 n
  3.         <meta charset="UTF-8">* z+ _; ?$ _& c5 S7 E# O
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    % ~3 j: ~* [0 Y
  5.         <title>WebSocket</title>! L7 n* N; `- Q* K
  6.     </head>
    4 \0 N: t/ Q5 H- L% p6 r( a
  7.     <body>
    ; ^0 \1 Q0 }4 p: r! ~/ d( S' f: T' |1 b
  8.     </body>
    1 L+ p/ |; ]# z+ ]
  9.     <script>+ E+ T% K2 j: [
  10.         var socket;3 P& l5 O+ X: D  F) |. u
  11.         if (window.WebSocket) {
    / ]' ^, V; D0 I- A; `# B7 l  O  P
  12.             socket = new WebSocket("ws://localhost:8080/myapp");: g  F3 I; h8 L) v, |
  13.             socket.onmessage = function(event) {; f: w  m5 h% J; g# x  H6 A: M5 ^
  14.                 alert("Received data from websocket: " + event.data);
    $ w) }; B% I% c# k+ E  F4 ^
  15.             }  X% [" o) D* p
  16.             socket.onopen = function(event) {
    , l2 ]% q( m; Z+ R  J  v# z2 q
  17.                 alert("Web Socket opened!");3 ?1 x8 n2 T- j: y3 E6 e  s
  18.             };
    % V5 J: A4 ^  A0 t; Y/ }% X+ L
  19.             socket.onclose = function(event) {
    : @/ u. C) w6 W  Z- J4 X6 m7 q9 E
  20.                 alert("Web Socket closed.");
    + G3 {6 b  z* q+ j  e5 i. I/ N
  21.             };7 x& H2 `: _/ x" p0 J) e
  22.         } else {) ^$ B3 Y- i; T; Y5 B# `, F
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    / Y! I' I8 `, q: V5 w8 Y; a8 S
  24.         }
    & q. T$ I' G1 m  M2 k! r# r
  25. ( y- L4 }4 p( ^) D0 K2 N
  26.         function send(message) {0 F8 V% K) d. M6 j, g1 ^
  27.             if (!window.WebSocket) {5 M: z8 F3 {& e& i7 p+ O
  28.                 return;! [! i! U! A4 B, R9 e
  29.             }1 ]9 R$ l' ]& }4 w( r
  30.             if (socket.readyState == WebSocket.OPEN) {7 p7 F0 G& a, B1 O  D
  31.                 socket.send(message);6 K' s$ s! H/ Z% L
  32.             } else {
    ) m- J' n3 X5 f; I/ m; O, |4 \
  33.                 alert("The socket is not open.");' @8 l7 a5 f6 o8 R5 @0 A' u* x, g
  34.             }
    - x+ X7 R% a  Q, }2 ?, P- |- f5 n
  35.         }
    : ~, P0 F7 r2 z6 R0 V+ [* q  K
  36.     </script>4 \/ X0 ?/ G+ \3 Q: Q
  37. </html>
复制代码
; q, Q) I2 z. @% {7 P; |! E

5 H- M3 _7 r# o, w6 G# w5 L1 V) }& X/ T% |- e( _% F. k% {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-27 01:51 , Processed in 0.126223 second(s), 22 queries .

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