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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

; o! O) f0 [. [8 X4 M# c

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
: A3 k4 {- l, b9 k* x3 y( n% s2 B3 H5 q* r* }# N7 Y* Z

$ N$ M% B# ]' k% d该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开) O, F) h+ O8 ~& b
  2.     }+ n! `* p5 U; D$ k7 n
  3. " m$ A8 Q- k8 k$ i; d( k2 m( U- l" ]
  4.     socket.onmessage = function(){
    1 M8 X# M/ z6 C+ J& }, {' |( Z6 G. w5 n
  5.         //在event.data消息数据
    . S5 C  g: J3 E# s* j& D
  6.     }
    4 @$ m* ~8 w& h; m

  7. # p" T4 w  R0 c3 c
  8.     socket.onclose = function(){* y" r% F3 l7 f  P8 B: ^
  9.         //关闭WebSocket; Z$ ^7 }( d' ]" M8 F$ n# ~' p4 N, L
  10.     }
    7 s, G: T9 ?5 s1 y; ?
  11. ' |; u& V6 ^5 c4 U
  12.     socket.onerror = function(){
    % t% B0 Y( N. p; e7 h/ Q
  13.         //错误触发
    - O. j9 m0 U6 x% `" [
  14.     }
复制代码
. A7 d# V, e9 j" T: W! @

) n% p! ]2 Y4 B+ q; r2 g! h- s

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

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

+ t" p7 n$ i* q% ^: W  r
, C; K: X- ~" [$ x
# _  w$ p  `5 y8 p0 X  @

代码附上:

  1. <!DOCTYPE html><html>2 K5 m8 w& u% `
  2.     <head>
    ) z2 K( P% S  K
  3.         <meta charset="UTF-8">' B* ]$ |& Y& z+ r, ]- Z- n
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">9 K: L9 {: K' m% @) d' Z
  5.         <title>WebSocket</title>, h$ g. R, u; h" O5 U8 B0 e  D8 m! `
  6.     </head>3 |3 S2 F" A) I* T
  7.     <body>6 f, ?& n. H0 {: V
  8.     </body>
    6 m/ r, H/ M" e. {$ |
  9.     <script>* H6 E/ A1 f0 T, \5 b
  10.         var socket;9 }2 G% N7 e% {2 R
  11.         if (window.WebSocket) {
    8 j; F& H: J, C! J
  12.             socket = new WebSocket("ws://localhost:8080/myapp");, K1 r+ G# F' n$ X
  13.             socket.onmessage = function(event) {$ r8 \0 k1 K( m3 `# Z5 h( J3 _
  14.                 alert("Received data from websocket: " + event.data);
    . B1 B' ?+ t, U3 w9 R( a
  15.             }, J' c# J9 n) O4 }
  16.             socket.onopen = function(event) {
    / e  g( O3 s2 ]) X# ], Q* I
  17.                 alert("Web Socket opened!");& v' ], I6 f! {; t9 P
  18.             };3 q3 x2 c% d2 ?3 q. a" F2 K
  19.             socket.onclose = function(event) {
    9 G  w# l. Q8 Y: x1 v
  20.                 alert("Web Socket closed.");
    $ _1 `( F" D3 K2 p0 r) l
  21.             };
    $ \0 |, Q! k  o2 c! ^4 c, a7 m
  22.         } else {
    $ o* w7 W" t7 W1 O) L
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    6 Y( @/ t- O9 {3 J! b/ i
  24.         }
    7 m  ?- s; e# @: M+ [& p* r4 B

  25. 0 z2 d7 o' G: v; L) F
  26.         function send(message) {4 Y) a- S. ~5 l% {' l- d
  27.             if (!window.WebSocket) {+ C! m0 {% `3 o1 v6 n5 f) \
  28.                 return;
    4 u" h" f. g8 L' e) J8 d9 G
  29.             }4 Y2 e- `2 g. z) [; L! G/ s& E( j
  30.             if (socket.readyState == WebSocket.OPEN) {9 g9 F( y0 Y; v* _& X
  31.                 socket.send(message);8 q" Y. C$ c4 u# K( Z7 j1 P
  32.             } else {/ |7 ^8 a! d, k6 M. v& s2 B1 {9 f
  33.                 alert("The socket is not open.");
      u9 k8 p1 @( f
  34.             }
    + i! H, i. |% u1 g4 X) J1 s
  35.         }& J. h6 {# y* @9 t6 D# U5 F
  36.     </script>% t* ^, r3 g; B% B& b+ E+ g+ G
  37. </html>
复制代码
! M6 s& {; P9 t0 W
/ }) w" X# r  j9 i* S
4 C& _: t6 ^# s/ {' q8 j  B5 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-28 06:37 , Processed in 0.111167 second(s), 20 queries .

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