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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

! {+ Z  S1 a7 {) f

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 3 t3 ]9 T! [! W' U, t# V

! y- g. S2 v) Z/ p3 W; F+ y0 L0 @: p
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开; a4 k# B* k7 W3 Q- K3 k, @% H% }
  2.     }( X8 C  |, j( J* C: }) l

  3. 3 a8 f. b, `* r# S1 ?- n
  4.     socket.onmessage = function(){
    $ g; Q# ~0 p! H+ S2 o
  5.         //在event.data消息数据# o+ {+ r0 m$ q* z0 p- \1 P5 j
  6.     }2 t: |7 \  ~  q3 ]$ K* L" I
  7. 3 @0 F3 y- N4 s  ]7 Z' X8 f
  8.     socket.onclose = function(){
    1 r% Y3 P. ~% N' V
  9.         //关闭WebSocket
    0 |& L5 h5 U1 a; n" ]; R6 G
  10.     }& k. \! L0 H9 v3 ^4 g+ k
  11. 7 F6 n7 f$ e1 |
  12.     socket.onerror = function(){
    , v( ]. s6 m0 k7 c8 t/ ~. U, R0 C
  13.         //错误触发8 }* V- q% ]7 ^
  14.     }
复制代码

" {! n# c2 l4 Z; I/ T6 o! f# U: @0 w8 Z: y- t$ W

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

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

$ }# a0 g" [4 E. l
- W  H  o6 K  E  C- K
9 D3 B% m0 F) S5 V' n

代码附上:

  1. <!DOCTYPE html><html>
    6 E; N5 ]8 v) D1 s
  2.     <head>
    3 J( j, U# W/ G% V- r  l
  3.         <meta charset="UTF-8">. }' n( h  t, b6 H' X5 x  \/ A: f% U) C7 o% F
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    6 B1 T+ n3 s9 s# {4 X" h& |( ^' [
  5.         <title>WebSocket</title>6 k1 G% Z. P0 J* H) @8 M2 d
  6.     </head>
    " u% ^% |8 m$ V9 m- q% D4 l
  7.     <body>
    & {2 h. o( @5 n
  8.     </body>1 g' U/ V1 y7 G. G. _/ W
  9.     <script>+ K& e' {/ c) K
  10.         var socket;
    1 C9 x9 a5 b: h3 {& g& y- _" ?# _
  11.         if (window.WebSocket) {. J7 A3 X% E& \, O8 V' O' ^+ u
  12.             socket = new WebSocket("ws://localhost:8080/myapp");5 h2 R, s5 E; D
  13.             socket.onmessage = function(event) {, y: c1 h% f& i3 c1 V1 c* m
  14.                 alert("Received data from websocket: " + event.data);2 F& K% h* ^, p* H8 i& R. y
  15.             }
    2 G3 b$ z+ R, x3 o
  16.             socket.onopen = function(event) {
    3 `  Z  c* v3 l; c0 x8 s
  17.                 alert("Web Socket opened!");
    % C3 w! @3 {5 p$ m* u# q8 }5 i
  18.             };
    : [( N$ ~5 Y2 ^
  19.             socket.onclose = function(event) {& S) K5 U4 E7 Z" F( |, u. o
  20.                 alert("Web Socket closed.");1 t* |& a- ~& d6 E4 r
  21.             };: \2 r) d. Q2 M4 k
  22.         } else {) ?- u% \+ |/ S3 W8 r
  23.             alert("Your browser does not support Websockets. (Use Chrome)");. {( X4 I3 \3 X& a6 G
  24.         }
    * }0 T$ i" }% T2 ^) O
  25. $ G, M* V+ b% u/ D) A8 @
  26.         function send(message) {
    . z4 |2 ]  E- z! Q1 i" o& c
  27.             if (!window.WebSocket) {0 N0 }+ V- V7 {2 u& `
  28.                 return;5 m) L! d# S' F! [
  29.             }9 C' e  ^2 V3 _( y" ?- e8 B
  30.             if (socket.readyState == WebSocket.OPEN) {- `! C3 u4 u- d" p
  31.                 socket.send(message);
    8 b9 O- g+ E; C6 w- ^, m- _# {3 r
  32.             } else {
    ! ]3 k( O7 _* S  p  {2 ]5 I
  33.                 alert("The socket is not open.");
    - Q: X# K8 E+ p9 B7 M
  34.             }
    ' ^# D" v1 r1 }# K
  35.         }
    6 K9 B" P, h0 J  ^/ b+ S0 q
  36.     </script>0 f/ L# z: [: l: m6 q' j
  37. </html>
复制代码
: `+ m7 ?( I. r3 e9 x6 H  l

2 v2 x9 ~$ l4 a# Z6 X4 d+ B; ~' Y0 D" U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:42 , Processed in 0.071586 second(s), 19 queries .

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