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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10510|回复: 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");  
复制代码
# r' R, R( E, n! M: _, O

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
$ j: H7 T0 s3 K
- P8 ~' o3 W- c) K% w  d6 W; |6 k! Z9 ^0 p9 w* j
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    / T% F  q% n: N& }3 L2 I  W
  2.     }' }& G. k! P5 H1 I+ P

  3. ) M: i$ L$ Y; C; A& N
  4.     socket.onmessage = function(){$ |6 q- `: j! X/ @; z3 D
  5.         //在event.data消息数据4 M5 h2 j+ S" W% G1 N6 X- u- S
  6.     }7 M/ i: H) q% E2 F  N! C7 X# h# [( T
  7. 5 N3 L8 G* ]! \; ]
  8.     socket.onclose = function(){$ X7 g/ i8 i0 c
  9.         //关闭WebSocket' _  A0 b( p4 I5 q+ P0 W
  10.     }
    2 v: w0 J  T" ]( _/ n8 Y/ v3 {+ @
  11. ; u4 d2 I! Q! s9 _
  12.     socket.onerror = function(){% \* G# x& p2 v; |6 y, q: f
  13.         //错误触发
    $ p: G/ S3 o# `8 G) g0 L" c0 [2 F
  14.     }
复制代码
& J, |& B5 e- X% i: \0 i

& Z! ]$ j# `' ^2 P

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

  1.     socket.send(message)
复制代码
" V% K$ x$ l9 \4 \7 @

5 ]! m' u( p; {- @. y. s, I! L- r* H0 C/ T4 Z

代码附上:

  1. <!DOCTYPE html><html>
    $ E0 [0 w$ N' E$ T0 b
  2.     <head>) q( G7 X6 Y6 K7 }$ z9 Z
  3.         <meta charset="UTF-8">% T1 H2 F" Y" @8 ]1 I! z1 C
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    2 s' X0 ~  x. D; I* }- N5 k' y
  5.         <title>WebSocket</title>$ i8 T$ \! \4 p% d& c8 X% A1 y
  6.     </head>6 ~- F9 Z2 k& F, p
  7.     <body>- a. p; `( d3 Z: w4 F- e; P
  8.     </body>
      @! M" j$ h3 I+ x3 L5 |$ L
  9.     <script>6 D/ G& o  o& i
  10.         var socket;" k1 y+ A/ N, x3 v, p% a( D) b
  11.         if (window.WebSocket) {
    6 O9 T; s4 c7 n' z3 \$ y
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    7 p+ r9 v* ?8 L5 \
  13.             socket.onmessage = function(event) {
    ) x1 }$ c$ E1 v+ D  d/ v
  14.                 alert("Received data from websocket: " + event.data);$ }2 f& ?( F$ ^  _
  15.             }8 w) ^4 P% G$ e7 d2 \
  16.             socket.onopen = function(event) {7 ^# C' y2 I+ `7 M1 \/ O
  17.                 alert("Web Socket opened!");
    * ]) l( E4 z4 `% M5 ]
  18.             };4 `( A" B8 N$ m4 F+ p
  19.             socket.onclose = function(event) {
    * t! h" A! l; [
  20.                 alert("Web Socket closed.");5 ?+ X/ I9 d& v' ?7 i
  21.             };$ S: o2 H5 D6 q% w' F
  22.         } else {7 T9 H0 f* V5 f
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    : S& o8 t* _! T" |  N! i6 `
  24.         }& i2 J* R1 X$ Z
  25. ! q! E8 s4 q! F; g( _  V
  26.         function send(message) {: I" `" V8 f% e2 q1 z
  27.             if (!window.WebSocket) {
    2 ^- ?7 Y4 H. I0 E  }, r
  28.                 return;
    # |' @  {2 ]! I7 J! i$ W
  29.             }  ~" z8 H. K  T* ?
  30.             if (socket.readyState == WebSocket.OPEN) {# E; U! E7 v+ X" A8 L
  31.                 socket.send(message);' U$ L. q) A0 W* I* u0 f& j
  32.             } else {% W9 }1 m  L% i0 w* Q! V
  33.                 alert("The socket is not open.");
    0 b( Q/ D8 k* H+ x% P2 L; ?
  34.             }
    # M( E; k# f" {6 m) D
  35.         }
    1 Q5 m2 {+ F$ n4 N( m: o  @
  36.     </script>
    * ]( `6 |. x$ h  L- r" i$ T
  37. </html>
复制代码

- U  b- Y' v7 {, w: u
, H: x# b, |' ]* D3 c+ R8 e% b, s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-26 13:56 , Processed in 0.124699 second(s), 19 queries .

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