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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15790|回复: 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");  
复制代码
! b- i; x7 i$ v. T7 W' g' ^+ v

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ) A$ t& S! G% z7 A' S& v% d
% A. ^( H: F# d# u# x7 _) M

1 i7 M, n/ F# A1 Y0 w2 f" ~" D  \该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开0 x, k/ t; c% t: Z0 T
  2.     }
    5 d' j: t2 v, \$ Q4 G8 D- u
  3. 3 O2 P6 H1 h# [, M
  4.     socket.onmessage = function(){  C2 {6 Y" q. W" ^) V0 t* h
  5.         //在event.data消息数据1 Z  J( z9 u5 k! C
  6.     }$ [. G. j" B0 Y/ K% L' G
  7. # Y) L& b! o3 {4 r
  8.     socket.onclose = function(){" z; o+ F7 l9 H
  9.         //关闭WebSocket
    3 k, ?$ q* u5 y. L) g
  10.     }# }4 f" D( w% m- S8 `
  11. % J. t3 F) ?; t
  12.     socket.onerror = function(){
    & [. z& F, ]( M- i4 B8 E2 _' ?, a: w
  13.         //错误触发
    - n) ?, M! U1 t& a$ Q
  14.     }
复制代码

1 E; Q3 v/ ]. Q: B% h( {3 d0 z2 ~) n% d$ K. R! k

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

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

' L: x" g, K% r3 i, K8 _2 H3 i- ^) g: ^. p, w7 \0 Q. P
, o" M/ d6 G) ?3 }

代码附上:

  1. <!DOCTYPE html><html>
    ) `! O4 m% l7 j: s3 M! d
  2.     <head>4 a# e& S/ G, N9 U6 n, x7 K
  3.         <meta charset="UTF-8">) i3 j( I9 }. n# B' R( D6 L4 I
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    $ m+ P7 e* e8 M4 K3 B
  5.         <title>WebSocket</title>  K5 C. [* C: d6 Z. n
  6.     </head>+ s$ ]' \! Y* g4 I
  7.     <body>, k& p8 I8 y/ P: i3 U- j
  8.     </body>
    8 D# h3 w. _8 N) [: ]* L4 b
  9.     <script>+ ]* ]- Y5 ~+ W0 N' w( y- Q! r
  10.         var socket;
    ! ]( K4 F# U$ I, I
  11.         if (window.WebSocket) {0 ^. R4 g& J  H" y
  12.             socket = new WebSocket("ws://localhost:8080/myapp");- K3 O# d& v( l
  13.             socket.onmessage = function(event) {
    1 V- e4 H& P- N6 \7 \, o' d9 v
  14.                 alert("Received data from websocket: " + event.data);, ^9 s* Z1 M' P0 G: q8 @% K0 S
  15.             }
    6 {5 K. m9 c9 v2 d" m: M) [: T* t
  16.             socket.onopen = function(event) {
    9 U* }/ _% t$ E( r
  17.                 alert("Web Socket opened!");# k6 ^# t% z! h* j  K
  18.             };& K$ M- J, ?3 z) ~$ S
  19.             socket.onclose = function(event) {
    ' R, h* N8 F4 Q
  20.                 alert("Web Socket closed.");- V( I; B7 v$ X, z3 ?7 n' y
  21.             };1 f* Z( m% E1 d5 H: b3 @" s0 M
  22.         } else {
    & c- a* g! n$ P! S
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
      y' f2 d$ G) L% _! l! Q
  24.         }& U% f5 H$ S; D8 G

  25. 5 X( _+ v7 ]( J* T$ W
  26.         function send(message) {) U" L5 A" a' Z) f4 T% F
  27.             if (!window.WebSocket) {; a8 v8 Y( Q" _
  28.                 return;
    ! ~9 G2 D5 B& ~0 e0 o7 G
  29.             }
    ( m# h+ l# p6 I' Y
  30.             if (socket.readyState == WebSocket.OPEN) {
    4 i) q1 D. S1 y+ ~4 u: ?  e1 ^" X: A
  31.                 socket.send(message);
    ; W$ Q' h6 r# f' z& H
  32.             } else {" K* W$ {1 A7 s9 D; E4 }  Y+ g
  33.                 alert("The socket is not open.");9 b0 j9 t  W* U) k
  34.             }
      S' H: K+ F' A9 {/ y- T8 F
  35.         }7 d# t! M, q% J( |4 i- B1 e$ K8 O
  36.     </script>
    4 Q5 M0 Z, X2 W
  37. </html>
复制代码
. M$ w: G) Q9 |% M8 k1 Q
8 F5 z: f0 j5 T8 J/ `: m# x

4 C. x+ p: e% O5 \% l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:14 , Processed in 0.063815 second(s), 19 queries .

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