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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14440|回复: 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");  
复制代码
+ u  K0 \) ?  Z( j! w/ v, Y+ q

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
  w( q( T7 J7 c+ M% P$ \" v
' X: M; `$ T  s( @- p0 J! d  Y7 |' C7 H2 x0 g
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开5 l% v. T$ i; Y6 G6 L
  2.     }
    2 k3 N6 c+ O  W$ S

  3. ; H$ r6 O0 I, Q. e$ F- l
  4.     socket.onmessage = function(){
    0 l4 k& P+ g7 H& a6 @
  5.         //在event.data消息数据. a) Z) E6 `0 C6 q$ q
  6.     }
    8 Q+ Q4 f" U. U( ]2 F, K' W
  7. 6 Y4 R' N  c4 Z
  8.     socket.onclose = function(){. N1 s! I- g8 A# j0 ~4 k( H1 V# A- F; V
  9.         //关闭WebSocket5 T# U0 J- P% i' ]# v- i5 N# {
  10.     }/ X6 |, C' h3 P" `( v- p8 k& ]. e

  11. 4 {) a" N% J3 Z3 i% w# c
  12.     socket.onerror = function(){
    , l& J5 r5 H/ c/ ]. ]5 n8 d0 p
  13.         //错误触发2 r4 X. |' l. j
  14.     }
复制代码
. N2 L( a3 w0 P2 h* D

3 c3 ]1 U9 X! r- e

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

  1.     socket.send(message)
复制代码
0 `1 O  h8 @" w/ Q

! S/ D" t' }& N! ~2 V
7 H8 U: \) O9 c0 q6 j/ t2 F( x7 r

代码附上:

  1. <!DOCTYPE html><html>5 N8 u7 U1 [: A0 y( M% p
  2.     <head>1 [% Q2 N( q/ V  A. G* }1 D! V
  3.         <meta charset="UTF-8">; R  [+ ~  A4 L0 U4 V
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">* M0 B. |: k2 |4 A
  5.         <title>WebSocket</title>
    . w: R# w$ W# b
  6.     </head>
    " ^1 J" v" j5 G1 O% F/ }
  7.     <body>
    6 H, I- O8 F. D& `6 f/ T' E3 \7 D
  8.     </body>7 }: Z- E/ `$ n3 ^  G
  9.     <script>+ G5 e& G2 K& h4 M
  10.         var socket;! `# x8 U0 l9 x3 ~2 f9 p
  11.         if (window.WebSocket) {
    # h3 c. O4 M# @. {$ p
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    4 o( A7 w4 K, S" G0 }, t* l
  13.             socket.onmessage = function(event) {7 {5 I& @5 j' B1 n7 N: ^
  14.                 alert("Received data from websocket: " + event.data);
    7 j4 D* ~$ o2 m/ P4 W& L8 o
  15.             }$ Q; {* f) @6 |1 I3 d, ^
  16.             socket.onopen = function(event) {
    " t/ _- t: x( u' H
  17.                 alert("Web Socket opened!");
    " H' o. }! g$ p
  18.             };; O7 c/ D2 u) \. L
  19.             socket.onclose = function(event) {8 `: \4 k" z! ?- [- B
  20.                 alert("Web Socket closed.");6 T. _+ R4 Z) p& {' ^# }$ }
  21.             };" g! W8 Z8 j$ ^, @8 I
  22.         } else {
    , T8 Z: [! ^/ h* W) ?) W9 V% ]
  23.             alert("Your browser does not support Websockets. (Use Chrome)");+ `7 s$ F/ U2 z- i
  24.         }: w0 {9 ~! n4 o8 @$ y

  25. * @4 L& B6 }( c+ `
  26.         function send(message) {. A& ^  `1 ]/ i2 Z( H# n; ]2 N* s
  27.             if (!window.WebSocket) {# r' _6 D% W+ W/ j
  28.                 return;; {0 g" U5 }8 Y$ Z/ u) i1 v
  29.             }; _( Q3 V/ V" c5 E3 n; [& p* C0 O
  30.             if (socket.readyState == WebSocket.OPEN) {* H' [1 w- q9 V2 a) `
  31.                 socket.send(message);
    ' I: j( z( ], R5 m3 n/ j9 w
  32.             } else {
    # R0 b0 _- x+ _- Q. b7 i; F  U
  33.                 alert("The socket is not open.");
    ; ~* \0 ]7 g8 g1 p) @% d
  34.             }
    5 P  ?% z% o( w# W! _
  35.         }0 v* F' u$ A" Q: z. H
  36.     </script>
    8 P/ [5 g# d, P  P/ W& T* q
  37. </html>
复制代码

- d7 G2 K9 w. g1 ^; j! r% E+ B4 @" I
' G; A4 ~1 R0 x9 ?' U" F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:13 , Processed in 0.064391 second(s), 19 queries .

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