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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14355|回复: 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");  
复制代码

1 y5 W. U5 a3 l

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 5 P/ x% r4 {- l/ k: M
( D5 J  m3 p) {9 E/ z2 C
1 Y/ q' c) v# h% T1 O  _' Q
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开: b+ z0 W9 q3 p8 L/ w/ |
  2.     }
    . K# _3 {4 Z5 `3 X+ z/ c
  3. $ H) K  r' ~4 `( [- B
  4.     socket.onmessage = function(){3 J2 ?! l  I4 p# |) c
  5.         //在event.data消息数据
    1 R7 v" Y) `* R( q3 ~0 }
  6.     }
    7 R/ ]- Z8 F* |! G0 M/ i: o

  7. 0 }6 s; C/ a4 T4 Y' P
  8.     socket.onclose = function(){
    1 a+ x0 ^: @2 l$ i: B* `' f" M
  9.         //关闭WebSocket
    - a. O$ ~% \" p3 p6 k" e- Y
  10.     }( i  D! S. F2 F* H
  11. 5 `3 m/ ^: {/ {) M% b. k  f8 `
  12.     socket.onerror = function(){
    3 @/ W( q2 @0 b7 P$ e( c# J# p" t
  13.         //错误触发& V6 Y9 Q3 _* \5 o, j9 o( V3 R' l
  14.     }
复制代码
" ?" V( }5 O+ ^8 |& f& L4 c% C" L
  y( [  D( ~! O: c8 A+ H  \

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

  1.     socket.send(message)
复制代码

9 k7 @! k( N/ m4 c! }# [' \: l' l: c8 k

5 F' g# l: @# f) q3 s

代码附上:

  1. <!DOCTYPE html><html>6 E# `# S8 o2 m0 ]# |8 |+ O; j
  2.     <head>1 F" a& O2 A; u9 r' h4 Y! e
  3.         <meta charset="UTF-8">
    ( h* W2 i- m$ l
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    : ^9 K6 y" V2 O
  5.         <title>WebSocket</title>4 V' R0 ^6 s. F. o% v; h# f+ T8 s
  6.     </head>
    8 S4 ~6 c( J# [1 R5 g: e! P
  7.     <body>4 H  S7 `0 M" M5 j3 W. e; H
  8.     </body>: j/ x" e9 t: ^+ L0 i+ C3 Q* T
  9.     <script>, e& z5 t) D& p
  10.         var socket;
    / W  j& D  ~; m% o, j
  11.         if (window.WebSocket) {( r3 v, ^( z' V
  12.             socket = new WebSocket("ws://localhost:8080/myapp");" ~2 p- t/ J& m3 N6 T0 r9 k
  13.             socket.onmessage = function(event) {1 b, W/ ?1 [( m5 {1 B) j
  14.                 alert("Received data from websocket: " + event.data);
    . D; {2 j! D8 a
  15.             }& Z8 O- s: A% Z9 x# n9 l9 y3 u
  16.             socket.onopen = function(event) {
    " M& e8 A. `  c
  17.                 alert("Web Socket opened!");
    6 W9 K% D% w* j: O: X
  18.             };
    ) B8 w5 B" z+ ]0 A' R8 L
  19.             socket.onclose = function(event) {
    + }; p1 m: u; g3 b/ |" ]! r8 P
  20.                 alert("Web Socket closed.");
    6 Z% B. ]. ~0 G' l: @. o; N
  21.             };+ [! G) R. r2 a3 c
  22.         } else {& ]2 r3 [6 x; @6 v+ y
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    7 C  m8 v) t% l3 y7 U
  24.         }" n* g: b/ o4 G8 c" S& M, x

  25. 5 S( F) M. j/ [" e* d9 w1 }
  26.         function send(message) {( r$ Z- A2 K& z# N' p# u$ m- u5 @2 e
  27.             if (!window.WebSocket) {
      C$ g9 O0 L& U- k! S& m5 z
  28.                 return;& y: c2 D$ a+ v8 m) m
  29.             }. l- E! l( @0 s
  30.             if (socket.readyState == WebSocket.OPEN) {3 d2 a( m3 K5 N5 i
  31.                 socket.send(message);: w/ g* K0 M6 {6 m0 n7 w/ G& x
  32.             } else {5 ]/ m0 e. t$ u4 q. J
  33.                 alert("The socket is not open.");% |  Q* Y5 ~' G+ h# Z- c% {  `$ X7 s
  34.             }, ?! I3 ^+ z( ?! X! [) M' U
  35.         }. i; ]5 Y/ B9 W' K5 Y
  36.     </script>, V+ k9 u" g; F  o. Z
  37. </html>
复制代码
, h' i5 h+ v8 K1 y: v

' s: e2 |: c, S! }" q, F8 p2 U5 h0 D+ p' c1 ], b" t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 17:35 , Processed in 0.053045 second(s), 22 queries .

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