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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14449|回复: 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");  
复制代码
( c  m' q* ?! }6 M# E# e" G

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
  F4 p' c' Q0 c0 o& I
7 w8 r$ u- I& D3 d0 K& S
" W/ O' p0 n% {  m该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开- h( I! P5 A; j" P! j* P  a
  2.     }% ^4 q4 R0 m5 [! y) K* T( o" u3 G' M
  3. 8 O4 P9 p- w# K" W4 U, p+ N- i5 ~) l
  4.     socket.onmessage = function(){
    % H6 T2 t+ X. ]4 b
  5.         //在event.data消息数据6 {! [; |! Y1 E" A# {# ^! F2 Y" R) k6 P" q
  6.     }+ T* y: R! Z5 ]& d6 F5 m2 ]( W. b

  7. ; K% I- W# o% o4 e
  8.     socket.onclose = function(){. Y) A0 }9 q1 M& g' P; Z
  9.         //关闭WebSocket& W( [) {% E' h9 P* M' m7 k1 t
  10.     }
    8 R3 B& b" c: ]. |7 S& F4 Y  \1 {

  11. - |2 b9 H3 f* c9 t
  12.     socket.onerror = function(){, }" }9 ]) w. C
  13.         //错误触发: s7 @% t5 t; |1 G
  14.     }
复制代码
5 w/ \6 p  @# k" p
3 _; [2 l2 i& u

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

  1.     socket.send(message)
复制代码
2 x8 _- I$ p8 a9 H
: c5 M! Q7 f9 j# x( ^
& a# e+ a" B4 l/ ~- z

代码附上:

  1. <!DOCTYPE html><html># A" f  V% I" X4 e
  2.     <head>
    ( v+ k. ~5 \% W" q
  3.         <meta charset="UTF-8">( l% q6 Z' X8 j8 |! E2 f  U
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    : S  w2 y# Y( e* d
  5.         <title>WebSocket</title>& ?& r9 X$ G, \4 G7 r9 Q/ ]
  6.     </head># i; @/ p3 E; w$ Y* P0 o
  7.     <body>
    # x+ R& t. p+ ]8 g; X' \! `4 w/ Z
  8.     </body>8 d& A7 _$ n) J9 T* E
  9.     <script>: |% P; z# H" T+ S8 v
  10.         var socket;
    ' e, ~5 v! f: U2 N4 P) N
  11.         if (window.WebSocket) {+ k! n7 f  u0 C% q' a- e
  12.             socket = new WebSocket("ws://localhost:8080/myapp");2 P/ S; c& ]% K
  13.             socket.onmessage = function(event) {
    9 Q/ k# L; {9 `' W# W5 o+ `
  14.                 alert("Received data from websocket: " + event.data);
    6 I! {" A) Z: D7 E4 d! @1 t8 \5 ~
  15.             }
    0 p8 l- p. H& o( O- B" U
  16.             socket.onopen = function(event) {
    ( O/ I2 C3 I6 Y. k4 e
  17.                 alert("Web Socket opened!");
    ( K# X! l! g, {
  18.             };
    & P: I. h/ i0 r
  19.             socket.onclose = function(event) {
    9 r- |' Q6 P3 e, [3 a3 `+ Y  ?
  20.                 alert("Web Socket closed.");
    , g/ \/ q  a2 ^  r* M4 E6 V6 }
  21.             };
    # a( X! _( `4 w$ T( K4 G
  22.         } else {0 T8 U8 P: m( k* M6 k3 K: c. a
  23.             alert("Your browser does not support Websockets. (Use Chrome)");1 a9 i7 {8 w, E/ C' @
  24.         }6 L' Y; b8 \8 X* m- A

  25. , y6 L+ K# \7 o9 Y! @" x8 n4 _
  26.         function send(message) {' X$ H3 Q9 i3 R- l8 f
  27.             if (!window.WebSocket) {0 E2 g" W3 F: j1 l6 |; `% r/ f
  28.                 return;. W( Z% P" ^& e2 y3 r8 R7 y
  29.             }
    3 h6 ^1 b+ h0 r% s( m
  30.             if (socket.readyState == WebSocket.OPEN) {
    " H; K0 i7 Q# G4 }7 `& w7 I9 I
  31.                 socket.send(message);9 O! u8 [2 V) Y. {: K
  32.             } else {# Y- ^% w! _6 V: v" h
  33.                 alert("The socket is not open.");' E: R% I7 U8 @
  34.             }; a9 l7 {# X1 ~, P' l
  35.         }* T' B% O; p" }
  36.     </script>7 l; F& _/ ]& Y. U* w( p
  37. </html>
复制代码

9 @7 R+ A) [. N4 K' W
* E0 ~0 D, p: w3 |
9 r1 o5 t% {4 _2 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:23 , Processed in 0.077624 second(s), 19 queries .

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