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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

! s" u# y7 z3 n& u! N1 _

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
6 b/ h/ X5 Z0 P5 X" j4 F* ?( F% K+ W, j6 e. g( ?3 B9 L9 j. W& l; J$ c6 Q/ `

8 X. F/ h4 k3 T/ ~! |$ R. H该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
      J2 W# E) B( Z
  2.     }
    + s; F" s4 Y4 ]0 V2 _% H* R, U

  3. 5 @) J, \& e/ k. t
  4.     socket.onmessage = function(){
    4 q% s$ p! z; M& p" @
  5.         //在event.data消息数据
    0 z1 D6 L* b/ D# H3 e' r
  6.     }
    ! i. ~" ~4 ~/ C

  7. ' N  f5 ]: `. f+ }. |+ x2 a
  8.     socket.onclose = function(){$ d+ i0 W. R6 i8 K+ {" ^
  9.         //关闭WebSocket
    1 O3 a1 s: l" G! t3 E
  10.     }* a8 j" b2 \7 Q9 m5 d/ C3 C
  11. 8 x& O& q4 t. S, \& e6 R
  12.     socket.onerror = function(){
    * \* M9 V* z! u1 i$ y; m
  13.         //错误触发+ ^" Y" z, d% \5 `7 O
  14.     }
复制代码
' B' K$ g% v0 G% q

( r; [9 l0 t+ ~5 U

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

  1.     socket.send(message)
复制代码
/ u& G( U/ S' D4 a7 N

8 \% E5 s) S# E8 ~" D
$ o( c: Y# O% D1 y& ]$ N

代码附上:

  1. <!DOCTYPE html><html>$ b+ a7 H( R+ ^# E0 S
  2.     <head>! U# z% S& L" V( M) {
  3.         <meta charset="UTF-8"># a" t- [1 B( F' F
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    - P6 X1 H$ O  v
  5.         <title>WebSocket</title>
    ) s$ L, @9 G8 R' ]$ Z
  6.     </head>, J$ Y% Y5 N. ]( W/ a' N
  7.     <body>. G( {1 }7 C' h! h  ]
  8.     </body>
    6 E  g, ^! Q' o/ F
  9.     <script>2 f- W3 k6 z% z6 G8 A4 y( Z3 {  s
  10.         var socket;% u$ {; S  X( B! J2 m
  11.         if (window.WebSocket) {
    6 N) p! B: ^! D7 \7 u; S/ X) m
  12.             socket = new WebSocket("ws://localhost:8080/myapp");) v8 {1 W: M: s
  13.             socket.onmessage = function(event) {
    : v5 c8 J5 [+ u  ^+ ?" s/ ?
  14.                 alert("Received data from websocket: " + event.data);* T1 A0 K6 L, @1 L- Q/ h: N
  15.             }
    " [8 T# O& u9 J! A( o6 h8 Y
  16.             socket.onopen = function(event) {; l. S2 `2 ~$ C+ K: O) Z0 O4 z
  17.                 alert("Web Socket opened!");
    " O) H. B. }1 q" ?
  18.             };/ }) `9 Q. @* L; O: u
  19.             socket.onclose = function(event) {0 \( F2 X& x2 o' y
  20.                 alert("Web Socket closed.");# G* [5 y: O" A! d  n1 [
  21.             };
    , R  f% a0 R+ Z' I8 h3 y
  22.         } else {
    + |5 I! V5 F5 A
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    4 q) b; w: P# {2 ~( `) q( m
  24.         }
    5 d/ F, y; b9 k4 ?% g* ], ?
  25. / a7 N8 r) i) U7 a, n
  26.         function send(message) {
    1 V/ i) B4 j1 w! A- J
  27.             if (!window.WebSocket) {: J4 ^& O5 Z% e( L3 z! Y' f$ Y
  28.                 return;3 D, H& l. v+ `! ~8 _" o
  29.             }! s) `6 j  k+ o) X5 u8 C* k) H$ O
  30.             if (socket.readyState == WebSocket.OPEN) {- q$ O6 s; U( g
  31.                 socket.send(message);
    5 g0 r" N* S, X* g( A
  32.             } else {
    $ s8 I. G' q3 `. c- X
  33.                 alert("The socket is not open.");
    , W6 W7 F* h" o. k- u$ I) t8 H/ P
  34.             }3 A! Z: Y+ O% P, d- [4 ?# v9 o
  35.         }9 P2 @1 C, |" l3 v. a' h
  36.     </script>
    6 Z9 g% ?& E- L6 _
  37. </html>
复制代码
. m0 n# m7 h% i. o- T; S

- v0 I) e: k% R; o" r$ r; X: J! V  H8 ~$ d% q; f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 21:28 , Processed in 0.130555 second(s), 19 queries .

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