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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14442|回复: 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");  
复制代码
( d) u" _" g! @4 A$ f9 n" Q* P

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 1 s% {7 t. }: n( w& A" w; O: |
) k# ^8 c1 m/ }0 N$ i2 z

' M. z) C& N4 p1 ?0 X该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开/ o/ ~7 z/ N) J% U' k+ c
  2.     }
    $ J# ]  T! X( Q, w8 x
  3. % y7 }/ F: L* C  P( X2 D
  4.     socket.onmessage = function(){
    & ~1 `2 j" Z, m. r3 _9 R% K
  5.         //在event.data消息数据2 n: ~* s3 [: K- t
  6.     }
    $ S1 N9 @" i! B. L9 x( p0 x

  7. ; e, X4 D, w4 g- U+ T
  8.     socket.onclose = function(){# }2 X1 p: M7 H
  9.         //关闭WebSocket
    ) V; E9 p: I2 @/ m. O. f$ b
  10.     }
    4 q) T0 Q* m1 g8 x
  11. 0 q1 s. m( S/ X: T0 E$ i2 K
  12.     socket.onerror = function(){
    & P' A7 F( a; u! v( s" p
  13.         //错误触发
    9 d/ v- z. M8 J- a
  14.     }
复制代码

: z6 @! e. v( x' ], R1 S6 H$ Q9 G1 R7 ?- t" t

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

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

( b% i) Q- L& i. u- T7 G0 H  M; {1 ~$ X1 G$ B; J2 r! a- q! y
/ I) l  e" @& r/ X: {  P$ U

代码附上:

  1. <!DOCTYPE html><html>) A* v$ z8 r6 {  w7 `% m
  2.     <head>
    + l. v1 ~' ~" Y& F6 \8 Q6 ^/ o
  3.         <meta charset="UTF-8">+ M2 W5 T9 }2 e& C3 q) w) J" a
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    & ?' \+ g; D9 K! e
  5.         <title>WebSocket</title>3 X9 S; x8 w) s7 O! _" y
  6.     </head>
    # R: `% F  u7 V; V: b0 C9 G! S
  7.     <body>
    : e# L2 X) ]6 B. O9 H
  8.     </body>8 J8 I0 v- P* F0 l
  9.     <script>9 ?# u) l" R; D8 T2 \  ?
  10.         var socket;* q) T) T& j: E, o/ ~* W
  11.         if (window.WebSocket) {
    / H3 I( u( N5 `, |$ A" \
  12.             socket = new WebSocket("ws://localhost:8080/myapp");7 b: ^' e" _$ X' I2 n/ k4 H+ ^3 r+ B
  13.             socket.onmessage = function(event) {4 @- J% j8 V' i: l
  14.                 alert("Received data from websocket: " + event.data);/ D8 y+ R5 l- B
  15.             }
    6 u4 `3 a! e( z6 b$ R) H
  16.             socket.onopen = function(event) {
    1 ^9 [3 B6 C& _4 I0 P. j1 W' Z
  17.                 alert("Web Socket opened!");
    8 d0 X  ?$ Q+ }
  18.             };
    8 U2 B$ F# O5 s5 `, m1 b- p$ C1 ?
  19.             socket.onclose = function(event) {+ \# N9 j. {; f+ Z( c! k
  20.                 alert("Web Socket closed.");: G: c' `# g3 y; {# P, e& A; |
  21.             };
    $ |5 d: G7 i. n- Z5 C3 I
  22.         } else {0 `2 I0 ?, `' ]: C* M4 N0 J
  23.             alert("Your browser does not support Websockets. (Use Chrome)");* c3 q, e& U0 b9 t# e8 z! m8 d$ X
  24.         }- f6 R# A2 a! D: t  s

  25. ' N% X% `# v" ?$ u
  26.         function send(message) {
    ' f# X) T: b  a2 h  G$ w. `- p0 {
  27.             if (!window.WebSocket) {% L# s' s& K  m: M. \
  28.                 return;
    ' K1 M" K. |/ W. P5 D5 t
  29.             }
    3 g* S; |+ j# V& k1 F
  30.             if (socket.readyState == WebSocket.OPEN) {
    2 @! c$ i5 G+ P+ ^4 u
  31.                 socket.send(message);) }$ ]+ q* B. a/ o0 H, j8 I
  32.             } else {
    % n! T$ [: g  C6 t- S
  33.                 alert("The socket is not open.");
    & ~% {6 G; g  z" c
  34.             }
    1 s% u7 T3 R  |, n% r
  35.         }  b/ \# K) e1 _( K) F  k  a# i
  36.     </script>
    . m; Q( y% V2 l' c; R
  37. </html>
复制代码

. I. F% e* u# @; K+ Z* A: f1 c$ O% B- Y0 P1 ~* P  j

  N) ?, a7 b% }) j$ I4 b# b. m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:45 , Processed in 0.051204 second(s), 20 queries .

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