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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15788|回复: 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");  
复制代码
3 q* x, k+ e4 P# N+ v) O2 h

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 % G1 J* |* p8 p2 B
! d: T5 C3 |9 v9 [& J1 U% ~
/ s% {. [) Q( r
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    7 k2 c  @, l8 p9 Q$ D# c
  2.     }
    7 H' k( K+ [# i  M5 z; G' d

  3. 4 `0 T# W" A; f3 v
  4.     socket.onmessage = function(){
    4 c( r; A' Z; S; j+ M5 f
  5.         //在event.data消息数据
    # Z3 s( }3 w4 O3 C
  6.     }
    4 k0 ~0 M& x  _# o7 D

  7. 9 r& Y2 D/ a# A4 r7 U5 T% F, Y  Z
  8.     socket.onclose = function(){2 z$ X9 T! @0 x" ~" f' S
  9.         //关闭WebSocket
    + X3 v; Z! I9 j% b
  10.     }$ K9 ]- T- Q. @
  11. 6 h5 E! m: h4 G. @  R
  12.     socket.onerror = function(){
    , L6 T( u  v# l
  13.         //错误触发7 H+ ?, e$ _: u$ B
  14.     }
复制代码

1 u3 w8 s; `  _8 J$ v+ I0 ~* S  C- k/ ]2 x! N/ S1 t

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

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

3 @* f5 \# q3 M1 w: q. o% t+ c" A7 h" A3 c/ N7 }

, G2 \& }: o% S3 [$ U

代码附上:

  1. <!DOCTYPE html><html>
    : x4 Z: p$ {: h! l1 z, N
  2.     <head>
    0 ^% O0 U4 X, ^6 x# b
  3.         <meta charset="UTF-8">  F6 z( L: i1 E$ k0 k. Z, n
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    % a# v8 U) [$ W2 O
  5.         <title>WebSocket</title>6 d* a3 R' U0 l9 M: J/ [& Y
  6.     </head>+ U& T4 H; M$ P, N; |
  7.     <body>
    ' A1 {! A: n& T5 v* H# M. h/ G( R9 \- i
  8.     </body># V8 w- D3 B& C; _& ]) m: a  \
  9.     <script>& Q+ Z: R5 j, M) k+ O, K
  10.         var socket;
    3 W) N/ r' P8 G" @
  11.         if (window.WebSocket) {4 ~6 T( S/ |& m* m, U0 Z
  12.             socket = new WebSocket("ws://localhost:8080/myapp");( p% a, Y) n4 n8 g' u
  13.             socket.onmessage = function(event) {* A5 [- o) l4 d- L
  14.                 alert("Received data from websocket: " + event.data);
    7 Q* E) K$ F3 u3 g
  15.             }+ o* z, _/ n4 ]/ m( u
  16.             socket.onopen = function(event) {8 U# s/ |: x1 c9 C' g. m" r& }
  17.                 alert("Web Socket opened!");7 a4 g3 p; e3 S5 p) U. V* Y- S
  18.             };
    * O1 B8 w) A. u2 f
  19.             socket.onclose = function(event) {
    4 |; g# o( c: Y
  20.                 alert("Web Socket closed.");
    1 X- Y" ]( n& T' c* y& x, X/ \
  21.             };" {$ p2 _# h* c& ^: e8 |% h9 p+ L* W! ]
  22.         } else {. `' l" m! U5 v6 ?! a4 j3 g
  23.             alert("Your browser does not support Websockets. (Use Chrome)");# m5 T1 A3 c2 _
  24.         }4 \3 i. T$ Z2 }5 Y# _# E

  25. 2 b3 K; d7 @! N! D# y5 W
  26.         function send(message) {( q4 j4 v5 q' B" K, S. u2 N
  27.             if (!window.WebSocket) {
    ( c$ G  n& K, [; z+ d" T) m
  28.                 return;$ ]$ H& w( ]' Y( i, [4 U
  29.             }' \  i# P+ O; S/ y
  30.             if (socket.readyState == WebSocket.OPEN) {
    ' K: Q: x) k! ~' J, u5 A, x+ Q
  31.                 socket.send(message);
      _8 |6 L: U8 f! D+ W* H& D7 C* w
  32.             } else {
    3 v4 R; [/ Q/ U' \6 H; v, l$ l
  33.                 alert("The socket is not open.");8 _- f8 s& R1 r* n) `5 ~) ^. N; l
  34.             }9 w6 E, _9 V$ M# K4 b# p. h2 k" y9 l
  35.         }8 }& ^8 F) Y6 ~7 z
  36.     </script>1 L% L% i% @( k, O" L; u5 U
  37. </html>
复制代码

) n, k/ M4 \+ Q: s2 _
  U  O% g, g' N; a  h/ N( _8 h( e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 02:07 , Processed in 0.068563 second(s), 19 queries .

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