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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15828|回复: 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");  
复制代码
2 O  ], p1 \$ Z1 }

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 7 Y6 C* a5 b. n1 L* F0 U

4 w5 |' F% \7 c1 ~9 N# s
/ G4 u6 x5 b4 p9 v, r- |该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ' E9 E  J7 @* f4 z' Q: L
  2.     }8 A; U4 J2 H: `- C/ x5 c/ d0 p2 J

  3. + d4 Z0 h% p* C! ^+ b" e7 F2 n8 {
  4.     socket.onmessage = function(){
    5 p" B6 k4 E; u& M. p
  5.         //在event.data消息数据& N; D, E" v# I0 `6 M. V( s' E
  6.     }
    ' V( ?6 x% E: C; v% |7 G5 O! _
  7. - x9 a4 L8 @% w$ ~
  8.     socket.onclose = function(){) |* N# N9 w! C8 N+ h* U
  9.         //关闭WebSocket
      w, M1 ?: H, a4 m" s& r1 q
  10.     }1 c0 k+ x' C4 s4 S; G1 L, A. I
  11. # Z9 \2 M$ g+ b) U" a2 R) k% Q
  12.     socket.onerror = function(){
    6 H6 s1 u* i, t3 L% f6 n6 O
  13.         //错误触发6 j/ R9 ]6 ?: d  n: n2 J* R
  14.     }
复制代码
, B* M! ?4 B: \. n' T

( A/ _9 |3 d( c) `4 b

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

  1.     socket.send(message)
复制代码
( k  f0 D$ j! _
7 B! o3 n) Y' z% m1 ?* J' U$ x

3 l$ h& }' e- V$ Q

代码附上:

  1. <!DOCTYPE html><html>. p4 l( j& D  |7 o2 A% T
  2.     <head>
    + W3 w& z2 h! x+ [& M7 [
  3.         <meta charset="UTF-8">& u2 b, \' s1 n2 b1 \
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">, |$ P, D" j4 X0 t
  5.         <title>WebSocket</title>
    $ v8 o% ?. T( ?9 ~
  6.     </head>, g' n9 C# `8 p% K: @2 K
  7.     <body>
    9 u: P0 ^/ c0 e2 Y7 I! N6 p
  8.     </body>6 L, F* B0 }" o) l4 z
  9.     <script>) q: \- l  Z6 }
  10.         var socket;3 Y3 |- R4 p' F2 ^3 N2 @
  11.         if (window.WebSocket) {% r' ~8 w; y4 A- X
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    9 L7 l" j+ _4 p) V; A
  13.             socket.onmessage = function(event) {
    / I) B! L. J' s% p% L3 [1 P- @; D
  14.                 alert("Received data from websocket: " + event.data);& T" a0 n9 D% y* M) F
  15.             }; Z5 X4 A) K# S) P
  16.             socket.onopen = function(event) {! t6 v$ L5 u. m& C' ]
  17.                 alert("Web Socket opened!");
    4 M8 o/ j5 f3 K
  18.             };' ~. h5 X" Y  }  v7 n+ B/ C
  19.             socket.onclose = function(event) {- l5 ~6 o, d0 L, V! T0 [
  20.                 alert("Web Socket closed.");
    # K8 O9 o8 z' j% j2 G
  21.             };/ _" t- y1 S2 M/ n  e! e
  22.         } else {1 Y9 O9 O1 T3 q( Q) A7 d
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    6 ^( `$ V9 ~* c; j! ~1 [, b
  24.         }
    / w3 R" c/ _; v: t4 m$ R) y
  25. + L2 Z  ?; L- N  I8 J
  26.         function send(message) {
    " t0 U) V, s  ?2 x  @" n
  27.             if (!window.WebSocket) {9 x3 @2 P4 ~9 f% [, e0 j0 V
  28.                 return;- b0 H& R, i' B* }  N
  29.             }
    9 d. D8 l6 h% p
  30.             if (socket.readyState == WebSocket.OPEN) {
      R- ^9 V6 U" u  n4 H3 Y
  31.                 socket.send(message);
      y0 y) g9 N# f' X4 E4 W
  32.             } else {
    9 ^0 `9 Y" s0 P6 L
  33.                 alert("The socket is not open.");' L0 P& @% p# N: W* K% S
  34.             }
    + P  O; p; \- h, \; ]9 U3 e' V
  35.         }
    ' p7 l  d6 J/ t
  36.     </script>* L5 w0 q/ \, \$ m* a
  37. </html>
复制代码

* k& F' a/ i9 G( ^$ ]# K2 M3 o5 i8 O; z# |- `6 u- @
4 Q; m" h( b& F0 l" i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-22 04:12 , Processed in 0.055242 second(s), 19 queries .

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