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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14457|回复: 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");  
复制代码
* d7 T* K6 r% Y$ j) b( R

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
( P( p: o$ v! R# n& I
8 G: K6 g5 ]) g) \
( t1 Z% T* V; i7 F! O1 [该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开8 m' I. u2 s! L1 h
  2.     }$ l2 Q- n: Z/ c3 T0 p

  3. 0 |1 g% e7 H) G& r/ q+ Q4 Y
  4.     socket.onmessage = function(){) W) [! B# H/ k1 E: \7 M
  5.         //在event.data消息数据. c8 u  {2 [) d5 `
  6.     }7 n6 u% F) N  X$ C: D! \
  7. 0 ^; E7 r2 E0 X* j, H4 H
  8.     socket.onclose = function(){% h# g/ C$ ^" }9 B4 n8 V
  9.         //关闭WebSocket
    1 _3 J  Q8 z  g5 v
  10.     }# K1 q1 T; d9 A" z  g" q
  11. , d' ?- }0 ]; Q
  12.     socket.onerror = function(){# w; Y7 n( g# P$ D
  13.         //错误触发. j- h3 G6 q$ _0 ~9 T8 h
  14.     }
复制代码

0 D* e4 F1 O0 j% g2 j6 M  T; d4 s9 ~8 B+ S+ g

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

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

" u, g7 T5 a, ]6 O1 y, x) v3 k& z' B  k0 J) l/ J

& {: b1 `! m: @& e

代码附上:

  1. <!DOCTYPE html><html>: l, r, p& u, o- h! h0 S9 v
  2.     <head>
    ; j( d7 N- e3 K" C: ~, y  R
  3.         <meta charset="UTF-8">
    : P7 e9 Z6 p% Q, r- L% t2 r
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    2 o: v  j: N2 e" @4 |+ l
  5.         <title>WebSocket</title>$ N/ ^" {& X8 b$ h; R. i) U# ]; R
  6.     </head>  X0 W) Q! s( ^; h& I. j, A. I
  7.     <body>
    6 x: \: s( f! C* {, x3 w- r, L/ R
  8.     </body>' a9 y6 B7 o: C
  9.     <script>
    + X1 F4 \5 y# G. J+ k
  10.         var socket;
    , ]0 U# Y+ W1 b3 z( d3 w6 m
  11.         if (window.WebSocket) {
    2 x$ d/ F- v' h* H
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    0 c. A9 M$ d) d% v" I; Z, o
  13.             socket.onmessage = function(event) {
    $ l1 p$ ]9 t  X  c
  14.                 alert("Received data from websocket: " + event.data);
    0 n# }. W$ o. {5 @
  15.             }
    - W0 H6 q! w2 C% x: w6 V
  16.             socket.onopen = function(event) {+ f' v, t5 D6 Z
  17.                 alert("Web Socket opened!");
    4 b" F$ {6 U2 H3 v! I% C8 V  W2 H
  18.             };0 X2 |9 J1 u# ^, z% U' [; P+ T
  19.             socket.onclose = function(event) {; A  `& N' Y; X0 L) m& ?' ^
  20.                 alert("Web Socket closed.");, ^! z) o, i1 s( ?
  21.             };
    6 U" P$ W' U9 |. v  i8 `/ l
  22.         } else {  N0 ]/ m  n2 @  t) i: X* z
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    / c# ^( h5 ~# u; \( ]! b( c
  24.         }* T% P3 C  F4 p1 s% A
  25. 5 \' `; Z- Q7 u3 f0 g3 y4 ?
  26.         function send(message) {6 Z. Y6 Z* U9 S+ v
  27.             if (!window.WebSocket) {2 U2 F1 b+ F, I+ J6 t
  28.                 return;
    7 c% r0 n+ F0 d
  29.             }2 l6 g7 b, x- v9 p! m
  30.             if (socket.readyState == WebSocket.OPEN) {
    0 |, g) t' i0 V
  31.                 socket.send(message);  [4 m, x' j5 W8 _( B7 P# p
  32.             } else {
    ) c  o3 n" Q5 k  y- m
  33.                 alert("The socket is not open.");
    7 i! e/ \" x( Y0 u3 H8 f0 z
  34.             }( g% `7 Q5 ~+ I# B# x
  35.         }: _* R0 h: F& u
  36.     </script>
    8 [0 u- J8 F4 k  A% u1 K
  37. </html>
复制代码
5 w# ]2 a! T+ {6 Z( d' n7 D0 i

& a7 k/ o0 c9 {9 [: e* D- q$ j( H6 Q3 B2 C4 I: m. E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 23:15 , Processed in 0.070044 second(s), 20 queries .

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