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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

9 K; O8 P; ?3 I* _" H3 x2 n7 z

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 6 s1 ^( }8 T& q$ @# M+ X7 V

5 F/ @) W* a: d. _# ]7 a
" P2 q4 l) Y6 M5 a该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开. r6 I  a% x! Y0 Z1 h$ P6 A: p
  2.     }. B7 a2 {" [% }! R! u
  3. & R4 ?1 a5 X& u& F$ g) A4 }
  4.     socket.onmessage = function(){" D& z" ~1 ^- y" X7 f% x+ `
  5.         //在event.data消息数据
    $ a& w2 k+ o" y8 a, K1 g+ V
  6.     }
    ) }; l1 {( [1 ?- O

  7. 7 O! s; V) U7 G" y
  8.     socket.onclose = function(){
    6 W8 Z( P6 u$ ]# [
  9.         //关闭WebSocket- b* k* V' p. N
  10.     }/ w  u; p2 w" X

  11. $ C* p) w- ^1 a" x) q* j( F, c
  12.     socket.onerror = function(){; T* |- @; W1 E) Q7 l1 u; S9 X/ p
  13.         //错误触发9 k7 q/ N# q4 f) V& w4 f" O6 \
  14.     }
复制代码

; V5 I* j. j1 k3 [' ^- m: X, {0 P

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

  1.     socket.send(message)
复制代码
( T. m. m- N% b; ]

% G6 ~6 \1 w2 ^0 U: I
/ F; h) f' t- `/ _& p" L

代码附上:

  1. <!DOCTYPE html><html>
    ' E) v$ ?3 l' c. R! [
  2.     <head>
    + k3 F& _  y8 `+ @' H7 m9 s
  3.         <meta charset="UTF-8">! C  s, \% |( W5 v, W1 S
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
      Z/ z1 F& K' e/ r, i
  5.         <title>WebSocket</title>$ A9 x$ T# _$ J3 f
  6.     </head>
    # B5 Y# B; T# ^7 ?$ ^+ s0 |# C
  7.     <body>; b; r6 c$ u! k' d% I2 r- q
  8.     </body>
    3 A+ l; a- x) A$ ?" H& L
  9.     <script>
    ! T1 m# |, K: m$ C; S
  10.         var socket;$ K: L* f( k0 N* }; s
  11.         if (window.WebSocket) {
    $ G  ]( E. z, `. `: s  _  d; c
  12.             socket = new WebSocket("ws://localhost:8080/myapp");2 p5 P) E4 Z: e3 [
  13.             socket.onmessage = function(event) {5 N+ N6 R$ Z. x
  14.                 alert("Received data from websocket: " + event.data);; ^& u' l0 D7 G
  15.             }
    4 q* J7 W: ~8 S$ a
  16.             socket.onopen = function(event) {
    4 z) c- g6 ?' B" n, o6 q/ i
  17.                 alert("Web Socket opened!");
    , i. P5 F/ z8 g. Q9 {
  18.             };% V5 w5 H5 L; y
  19.             socket.onclose = function(event) {) x2 A8 F- L2 e
  20.                 alert("Web Socket closed.");
    7 x* t$ p, P; \6 t: @
  21.             };
    : A% }* A2 x0 F5 S
  22.         } else {
    ; X9 \! ?: X6 R
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    . D2 U9 ~& `7 h; H3 x3 _, n  Q* g
  24.         }
    * G3 |, p. l! g0 b7 c8 a
  25. 9 F' r3 z$ b" n  x# r5 V8 D
  26.         function send(message) {
    0 D: M; _4 M$ r0 H6 ^
  27.             if (!window.WebSocket) {
    - Y+ q/ Z' Q& U* Y* e& P: o
  28.                 return;
    ( s1 Z; [8 p+ Y& f: o
  29.             }: u6 s/ u# Z- d1 q1 O& M
  30.             if (socket.readyState == WebSocket.OPEN) {
    & O3 N5 J) Q3 D3 N1 H2 c% c
  31.                 socket.send(message);
    4 u+ Y8 N7 F* [# R
  32.             } else {
    , H3 R$ |7 d: W9 D
  33.                 alert("The socket is not open.");
    ( e' `+ i% ~4 m+ z6 z! |
  34.             }$ p3 V3 X, ^4 J
  35.         }
    ' I# ?3 E) G" l4 n4 ~( x8 S8 P
  36.     </script>
    # A3 \  U1 L5 o: J  z
  37. </html>
复制代码
& E5 f7 W2 x4 Q

& u5 \3 n. C/ J. F9 o
. p' ]2 p* c: b$ J  Z( i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 13:17 , Processed in 0.049196 second(s), 21 queries .

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