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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10006|回复: 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");  
复制代码
" X- [9 t5 ?$ ]# ?; p

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
3 |7 I- i( X# s9 j- X6 J" l) v6 c$ S

# f) j5 j8 s( c: D4 y: X该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    & j7 Q6 o# v* o
  2.     }
    ! `; B4 g* z1 [' b

  3. % c1 x) D& t+ ?9 E$ Q
  4.     socket.onmessage = function(){
    ' b. C$ V" A; M  d
  5.         //在event.data消息数据: ?6 S0 K+ x& N0 Q7 @
  6.     }7 X' x0 }" f+ V7 w: z" h* W  P
  7. 1 f7 s+ d1 c, c) t9 P6 S
  8.     socket.onclose = function(){
    1 w9 }5 ~5 [7 B
  9.         //关闭WebSocket1 `; n/ o8 V6 P- g- B% t% W) a* z
  10.     }# q6 x4 G5 b9 H7 t0 T( A- ?

  11. / j$ Q% d. ]7 m. t% T+ b! ?2 [
  12.     socket.onerror = function(){5 ^8 N$ d* ^& z0 A
  13.         //错误触发! U# w- Q  O" k* ~( v( j; G; M  K/ n5 T
  14.     }
复制代码

' d2 C% r8 D" [! l0 O5 S
  T9 w! _$ _! e! ~

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

  1.     socket.send(message)
复制代码
9 `, I3 m" q) z2 ]; H7 S

  w! N( ~9 A5 W( L6 E) Y. ^: D$ h' n

代码附上:

  1. <!DOCTYPE html><html>6 D  `% x* ~; |! g3 S. ^/ P
  2.     <head>
    ' b1 b7 s% q. \+ X
  3.         <meta charset="UTF-8">
    . @1 s" `( }$ c7 o4 F1 x
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">8 U. ~( O- m+ z) Z9 f- q
  5.         <title>WebSocket</title>" R% P1 ]4 o8 }" ^/ c# o
  6.     </head>( L( `# P5 g2 B! F/ T4 B
  7.     <body>
    . V% y+ o4 q9 I1 m+ H
  8.     </body>
    6 p9 [6 {% R- d% C6 o
  9.     <script>! D8 K1 ?8 d, P9 w2 g5 K6 K
  10.         var socket;5 b% f$ @8 N4 D# X+ R% S* n
  11.         if (window.WebSocket) {
    7 d4 `. T0 ]2 h/ c' H: u# R- ~
  12.             socket = new WebSocket("ws://localhost:8080/myapp");8 a( s8 G% q2 T! t1 s: w. L
  13.             socket.onmessage = function(event) {
    0 A  j: F8 `8 \: D! w8 |
  14.                 alert("Received data from websocket: " + event.data);
    ! K0 u# m6 D. m% ~, S
  15.             }
    ! _' c4 |8 j- B* F- f! R
  16.             socket.onopen = function(event) {
      [" x9 s+ x3 c- J$ V# ?2 [9 p
  17.                 alert("Web Socket opened!");
    / {. [) B9 K" G1 @2 c9 s
  18.             };
    + `3 f+ H1 W- r# c; Z
  19.             socket.onclose = function(event) {5 M5 |5 X6 ]# T
  20.                 alert("Web Socket closed.");7 X( w6 V! `/ Q/ p( T# L
  21.             };0 N; p9 |7 y% s: O% E
  22.         } else {9 T- c) S' b; @  b' @) ?% o& |
  23.             alert("Your browser does not support Websockets. (Use Chrome)");& i/ c; A; C; f
  24.         }
    7 |. k* o8 i- o+ y8 P* ~
  25. - z- R$ x; o# g( t' r
  26.         function send(message) {) n' ?4 Y6 k: ]! F* Y+ p5 _: o
  27.             if (!window.WebSocket) {1 C9 j2 _1 ]; h* m+ L
  28.                 return;  O+ r6 y2 r5 D
  29.             }9 [  _8 W% z* l' e& f
  30.             if (socket.readyState == WebSocket.OPEN) {# O# }. l* j- K, M
  31.                 socket.send(message);; |  `3 n/ u2 e' A
  32.             } else {
    0 A& _. I; o- u/ `6 ^
  33.                 alert("The socket is not open.");: e4 X& z* T6 s3 C
  34.             }) o7 g. o1 S" ]0 e: ^7 Z% ]$ x
  35.         }
    / q4 D1 }1 m+ S* z8 a& r- U; J
  36.     </script>- Q, h( y( V9 m; K* u9 f. ~7 J! r
  37. </html>
复制代码

8 `& D# t- R# D) r4 |8 `7 t. W
% Q. ?0 f7 k% [- o; m! N% F  q
. H; g9 Q$ [- o$ {& h" K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 12:10 , Processed in 0.132264 second(s), 19 queries .

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