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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

/ v5 P' S2 o4 `3 r3 r

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
$ K1 ^* v, d7 P1 B" Y0 q7 Z1 I  h' H8 Z. c) I* D

; f5 Q  \- z3 L6 a' ?该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    9 r$ u0 p1 O3 W4 a
  2.     }
    - W4 b! l) J0 Z
  3. - G# S- `3 f& b* q
  4.     socket.onmessage = function(){7 {& G1 f1 y6 w' B. ~
  5.         //在event.data消息数据
    ; l% a- m5 n3 j- R1 Z3 K
  6.     }( h. e# E6 E2 k0 Y4 z

  7.   i7 D  u) S, C4 q+ g6 h: D4 Q9 c
  8.     socket.onclose = function(){
    , q8 b! j5 w. Y5 l; t, g- h3 v
  9.         //关闭WebSocket' h2 Q. t" R" Y! q0 N$ m) o
  10.     }# C3 x4 R; r+ n! t1 j' I& p6 v+ v
  11. ' l, A! g: l; [" a* [
  12.     socket.onerror = function(){
    2 `: l4 k4 ^& [1 T5 o
  13.         //错误触发" w1 R+ A1 @$ C; U0 U6 d
  14.     }
复制代码
, v# T( e. I9 h9 z/ ~
7 k! L6 F% @8 k" u8 s  b: R

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

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

6 U( Y2 W" B) \8 @3 e6 h# F  v- w) Q: Z0 A) V, F5 _2 I. V
# Q$ z% f9 H1 r% _! d9 P# N  H

代码附上:

  1. <!DOCTYPE html><html>
    ) |1 A6 s9 f4 g: b  N
  2.     <head>* r9 ^2 H! X2 J; z
  3.         <meta charset="UTF-8">
    4 A  p3 _% ^* \1 [) R( K' }
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">; ]: M4 A/ e' b# D9 j$ C
  5.         <title>WebSocket</title>) ~1 U/ O1 i2 i: o( w
  6.     </head>" A$ p( s0 ~! e& P) H
  7.     <body>: a7 V7 d/ q5 v8 d$ B
  8.     </body>
    . x0 u7 k7 G4 n3 N* Y! |# e  Z
  9.     <script>
    3 F4 m+ S& A9 B: \! C' {
  10.         var socket;
    : X' y: h* L9 q- x9 ]& K
  11.         if (window.WebSocket) {' ]* v: u( i7 D3 r0 w7 o
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    6 `' f( V3 ?- }; O( f
  13.             socket.onmessage = function(event) {1 x- c# k$ \) h4 T) r
  14.                 alert("Received data from websocket: " + event.data);, P$ _, r" `8 Q2 z4 {& n6 y
  15.             }0 e9 |9 j% Z, p+ H
  16.             socket.onopen = function(event) {  i( O7 @" K+ z! p! U% Z2 m
  17.                 alert("Web Socket opened!");, X+ `) U' O0 c0 I; _; M: I
  18.             };
    " h& Q! g! `" j( W; j$ J% _: o0 @0 i
  19.             socket.onclose = function(event) {
    , w: q/ j5 d4 X+ ~3 l
  20.                 alert("Web Socket closed.");
    7 @2 w& b. K" {" L, E
  21.             };
    ! L) B9 {  p( x/ h9 T
  22.         } else {
    5 r: C3 I3 S9 a% |4 B
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ) K1 x! ~: O( L  K- m* r) t/ M
  24.         }- Z- h0 d4 r! H, o$ [' L9 m4 C: F
  25. + p( ?  Z8 B9 d) Q# w8 \. }
  26.         function send(message) {  R6 ]8 u5 i3 z# V4 L
  27.             if (!window.WebSocket) {
    ' f& Q$ l2 m, K- m; o+ e1 E
  28.                 return;) o- j2 S% ?# J) ^7 P  H
  29.             }; _/ K7 Z- e9 a5 R) i0 p6 h' ~
  30.             if (socket.readyState == WebSocket.OPEN) {
    & w. t0 ?2 q% R
  31.                 socket.send(message);
    5 h. I" y4 @6 f: T& x
  32.             } else {
      v4 Y1 Q# k' y
  33.                 alert("The socket is not open.");
    ( [! J( k& Z6 V' J% q% T) _7 K
  34.             }
    ( a& u' F- u9 T
  35.         }
    5 x1 `: Z) n9 m+ ?7 L7 h6 L! d
  36.     </script>) a! T# i+ \7 q! {" b8 [
  37. </html>
复制代码
, @) a, K# m) U% x  G

$ R0 x7 }! N' L. x6 h+ d! r
3 h% ^# Q9 h9 j# t: u, }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 20:50 , Processed in 0.072855 second(s), 22 queries .

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