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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14713|回复: 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");  
复制代码
8 A/ u. F6 }8 t6 k  D) S! {4 V' S  _0 S

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
& ]4 |4 K5 R) \" V' `0 U/ B/ N3 v6 W# P: G

0 R( T& k( }3 n' J: A& s$ l该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开( V5 j8 a8 w, x8 R
  2.     }
    2 u, o2 o& X4 ~2 g5 [# d# p% X

  3. ( E& j+ V. T; H" s& b, r" F5 j3 v
  4.     socket.onmessage = function(){
    1 [2 \9 d2 d: w) b% U6 p; h
  5.         //在event.data消息数据
    0 p# B5 t& S# a, }: L
  6.     }
    . O3 K( {, N+ B3 p" G4 z

  7. / ?: E" u( a0 x) I
  8.     socket.onclose = function(){8 X! T. b& l" @5 `/ Y# A8 s3 O
  9.         //关闭WebSocket7 O: Q# G& ?$ C) v/ u4 q; S* f1 C
  10.     }
    ! {1 f' ^' G) H
  11. 5 H# @8 p. r$ n# n! u
  12.     socket.onerror = function(){( j6 b( |, g6 J, g4 }
  13.         //错误触发" r$ Y0 B( n9 M4 x' w1 M3 F2 J
  14.     }
复制代码
) {7 n" f* R1 L8 ]& s

+ [4 Z9 @% ~# A! G" p4 h% |

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

  1.     socket.send(message)
复制代码
8 B( I9 }( f1 h) I" B
' D+ I1 x  }/ ~4 L1 L' N1 ]
+ J. L) ~8 I3 x" W1 a8 w

代码附上:

  1. <!DOCTYPE html><html>7 i" m: V* M; X+ C  F
  2.     <head>
    7 x5 [% K4 B% k4 V
  3.         <meta charset="UTF-8">
    7 |1 P3 s' U5 C1 d
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">3 _% r9 K( d% Q
  5.         <title>WebSocket</title>" B% U: s4 l$ p7 E0 C
  6.     </head>; ~4 r  H) G# T8 `( K4 v/ T
  7.     <body>
    0 _& ]' d$ o9 w5 a( N! I* `2 ~* e
  8.     </body>2 P* _' Q6 Z6 r# f% E  ?( O  q: C" r
  9.     <script>
    & e8 |, `; b  I8 f
  10.         var socket;
      V  W8 E% ?7 f: \! Q8 i
  11.         if (window.WebSocket) {( \) I& R2 P6 c
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    8 F. ^8 }4 S2 u6 l( C* Y( B: j8 X* g
  13.             socket.onmessage = function(event) {
    ) d5 L; t* ~! y( j8 k4 M/ t9 D6 B
  14.                 alert("Received data from websocket: " + event.data);
    ! I% p# q7 k) W
  15.             }; a$ D6 \* T7 J6 f: ~. {) L! ?
  16.             socket.onopen = function(event) {
    / Y  C! g7 A" n* W/ G
  17.                 alert("Web Socket opened!");/ e' B5 p3 m' i1 ?
  18.             };5 M9 a( M' q/ }! U& y9 ]
  19.             socket.onclose = function(event) {
    % x& c3 r, C* s1 A
  20.                 alert("Web Socket closed.");8 Q# [, Z8 k: b' @( T) |2 ^
  21.             };
    $ e% V' f" W: w: O% r) X/ B$ u5 M
  22.         } else {: ]4 ^( L$ h& a6 {$ R# p/ d
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    9 g! c  P3 y1 o9 V& z% _) P) L
  24.         }6 l* e) _, q, q4 q) Z

  25. ( R( ^* x/ q4 L, p; }% S- l
  26.         function send(message) {
      j+ p) N8 u  k5 a0 I  C
  27.             if (!window.WebSocket) {6 n% j2 v" \9 q. V) Y
  28.                 return;
    4 B  n$ ~7 g& [' Q2 N3 Y
  29.             }
    % ]- i/ S% M  `: Q! f+ j3 J
  30.             if (socket.readyState == WebSocket.OPEN) {
    + O6 v, b/ \0 @5 A) G
  31.                 socket.send(message);) A! D  p6 o3 _* ^1 b
  32.             } else {
    % a- Y, e" l6 F: x
  33.                 alert("The socket is not open.");8 g: Q% B5 B, Q
  34.             }
    : y! o( a  n. d& P. p% x& B4 T& M; ~6 D
  35.         }4 l3 [7 [5 K3 G. ]) l/ R; v0 I
  36.     </script>
    , F/ h# Z" Z9 j% Q( p
  37. </html>
复制代码
) m! T/ y, \9 ]' e

0 U; B% S6 H& z2 B7 @  l# r3 P/ k! ]' z( q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:55 , Processed in 0.062111 second(s), 20 queries .

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