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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14450|回复: 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");  
复制代码
5 M  z: N/ t! l, o

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 5 v4 T9 r5 x% e! U' q
& w3 f$ L# B- h- R) ?: p/ e

8 N5 [' b# N/ O该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开* q0 n0 Q7 V, L* h! o" z6 I
  2.     }
    1 ]* k/ @6 q5 ^, H8 \

  3. 4 ~4 u+ p" O) }7 Q: Q
  4.     socket.onmessage = function(){) N6 Y- D7 @& X
  5.         //在event.data消息数据4 T" o- x& a( k0 w0 r
  6.     }9 W3 {. p3 }9 h9 W) T  T& P6 p
  7. 8 p) b4 Z8 b5 B$ K+ E: K  K3 Q
  8.     socket.onclose = function(){0 ], Q. L- w! U$ o3 ?4 W4 D" U& ^
  9.         //关闭WebSocket
    ' O5 L% E/ j2 u4 g2 |* D
  10.     }
    " Z) q4 P3 K+ x. }9 z% [
  11. # v% w; ^, t; h$ w& s4 i
  12.     socket.onerror = function(){
    2 F  ]3 h2 \) d9 e; K7 B
  13.         //错误触发, ~* C: p6 o) m; H
  14.     }
复制代码

; Y! a3 l: ~4 h) ~& _
: W/ A* T3 a# t+ F" r. q

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

  1.     socket.send(message)
复制代码
2 r! l  m0 T) ^6 j

4 }9 _* [( r* |3 |% q( m: i- Y$ S' }  R4 S$ i

代码附上:

  1. <!DOCTYPE html><html># c$ I( b' C  ^7 \8 r2 M
  2.     <head>, `. v2 Y' Z$ ?7 k' @8 x3 ^
  3.         <meta charset="UTF-8">
    / ~. @  d' s1 W1 r4 f$ g9 n
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">9 M6 N: V  j/ c* @/ |: v
  5.         <title>WebSocket</title>0 t, `- D1 M7 }/ q
  6.     </head>
    % y+ V3 {' w$ S! L" t4 ]8 c$ x
  7.     <body>! Z7 _; I+ a2 c  i& U6 L9 P
  8.     </body>+ X+ K( w9 P" E& V  A2 E  M* _0 I
  9.     <script>) C7 ~, e6 V) Y* b2 I
  10.         var socket;
    - V3 P1 y4 g& }
  11.         if (window.WebSocket) {
    1 Q7 T+ @  V: f7 V. x/ c
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    $ T/ S, n1 V/ `9 C" U- f- r' U
  13.             socket.onmessage = function(event) {1 _0 Y7 |- ]8 B5 b
  14.                 alert("Received data from websocket: " + event.data);* g0 T2 V, u. a6 @
  15.             }
    ; _: T; w  W1 o
  16.             socket.onopen = function(event) {, Z$ [1 r1 ]5 G: X, B
  17.                 alert("Web Socket opened!");
    % ]5 e3 J+ {& C  r% d- ]! j! Q
  18.             };, X3 _( l4 @$ m5 }
  19.             socket.onclose = function(event) {
    ( Z/ ?. f' m3 d0 r7 ]: g" n
  20.                 alert("Web Socket closed.");
    $ g% f7 M# ]2 ^& I: N2 b5 H% S
  21.             };
    1 p, z. @! G: b/ T# R! X
  22.         } else {. Q) ?# O4 W! o: E" s
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    4 Q/ I0 n. \0 d: q* D
  24.         }
    6 s+ {7 b; _' m9 J

  25. 0 o2 r% i$ D8 s6 E1 a
  26.         function send(message) {
    3 G% g% i% [. t7 j" p4 D
  27.             if (!window.WebSocket) {& w* ~! F6 Y) ^2 j* }& C0 `
  28.                 return;
    + I9 L% E0 N: _; S4 F- V3 l( k7 [
  29.             }0 S' e# u2 Q) c3 B5 b( I* F
  30.             if (socket.readyState == WebSocket.OPEN) {
    ) b# A1 ^3 j! c- I: w2 U+ I2 u
  31.                 socket.send(message);
    5 g2 h* S5 ?' K* i% g
  32.             } else {
    " ?4 Q9 N/ M- r1 p+ @* M
  33.                 alert("The socket is not open.");# P; v- @$ b$ |
  34.             }
    9 B$ z, T( b- e* j2 T4 C) R- _
  35.         }- Z3 T* {$ e+ n+ ]- R
  36.     </script>& j; h" {/ b" M  }0 A8 T0 s
  37. </html>
复制代码
9 ~4 U2 h8 j2 ?2 N! c' \0 C

! ^3 v# E; t6 }' B' u3 [- Q' i( F6 S/ }  j* }, Y$ {5 N* e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 18:25 , Processed in 0.046099 second(s), 20 queries .

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