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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1 [, A4 \7 a, G3 j& }1 ^! T

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
% C5 {: F; ]) K
# T: S* k2 H# y. T9 u
9 r/ y- S* ~. T该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ' _1 t$ Q  z9 I( Y
  2.     }3 Y$ f8 a" _  L) f# j
  3. # j: O) S" Z' v2 U& G# }% ^/ h
  4.     socket.onmessage = function(){
    2 @" J8 i% S" }3 S% ?
  5.         //在event.data消息数据1 s& D! @7 ^; P) U; e& J
  6.     }
    8 {  t1 }+ M$ W5 o

  7. " N/ @; n' R$ V5 y6 }9 r
  8.     socket.onclose = function(){6 q8 n8 d2 p: V, l
  9.         //关闭WebSocket
    : c; }3 E( q3 e
  10.     }# q) j! ^; D9 G9 k
  11. 5 H& {# O5 }& T9 b
  12.     socket.onerror = function(){
      v: Y, D, W7 ?$ V( O# O3 e
  13.         //错误触发
    & Q  d& q7 U8 A( Z* ]- Q
  14.     }
复制代码

# s+ ?" T" V; T8 W, i+ }
2 L4 M( F: j; A$ G

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

  1.     socket.send(message)
复制代码
1 H7 T; v* p$ O) X/ p, R6 y8 i

" I4 {7 ]" O! U  Z0 q( D! Q* Y+ b6 |8 c3 I, H3 v7 p

代码附上:

  1. <!DOCTYPE html><html>
    , H. g3 W0 }3 }" ^( |2 U  i, \
  2.     <head>" n: F( n: C! q0 y! L3 m6 @' G
  3.         <meta charset="UTF-8">. b/ \! q, f# ?0 O/ H0 {1 B  i
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    3 k7 O& l7 j4 N3 ^
  5.         <title>WebSocket</title>
    " O0 a. Q, I  ]
  6.     </head>
    . M+ h; E( \( z! S' |0 b. O+ X
  7.     <body>
    / D) i- \; E' F( c
  8.     </body>! k4 Z3 `, t: L% I
  9.     <script>
    ; n. x2 z" `, r* C. n) F0 v' }+ r! P
  10.         var socket;
    ) a3 C% L+ n; F; c( T
  11.         if (window.WebSocket) {$ P- a' |8 S7 y! O$ T
  12.             socket = new WebSocket("ws://localhost:8080/myapp");$ _9 y* r, X6 z# i/ q# ?" B
  13.             socket.onmessage = function(event) {  ^% _  w$ f2 U% h* `) r
  14.                 alert("Received data from websocket: " + event.data);) Y/ x4 k) I8 t
  15.             }
    ' i. T4 D; S3 B4 M
  16.             socket.onopen = function(event) {3 s6 [, ^9 J7 |: l
  17.                 alert("Web Socket opened!");$ B+ w- z8 g- _- E7 T; M
  18.             };
    / ?# K; c9 I1 P. V/ w! h2 [- _
  19.             socket.onclose = function(event) {
    ! A" {- J6 o# Q- O! }9 x
  20.                 alert("Web Socket closed.");$ f) L5 G/ C: B' B- E- Z. P8 a% Q
  21.             };
    0 _! a, J; T- W8 s+ f1 c
  22.         } else {
    + x" f' O) r# A8 M3 d! L
  23.             alert("Your browser does not support Websockets. (Use Chrome)");5 [9 T5 F& T; G  Q  Y, z
  24.         }
    2 e/ ]6 g- Z$ {
  25. + e* E0 n8 q- Q0 m% X! f5 ~
  26.         function send(message) {, N) c% W4 E- D( _' C
  27.             if (!window.WebSocket) {
    6 G+ w1 a+ N1 T/ Q& g1 c
  28.                 return;0 a9 ?: ^' B( i% f. P- m
  29.             }, _& k+ m& ~) v- }1 e
  30.             if (socket.readyState == WebSocket.OPEN) {2 V3 e  k) x4 L- n9 N* X& \
  31.                 socket.send(message);
    $ Z' q; S; g- G: R  N" `
  32.             } else {
    3 F$ H6 x! J8 [' \) \5 _; w
  33.                 alert("The socket is not open.");
    ) p( R+ M+ `& {
  34.             }7 ^  q6 n4 Z! m/ P
  35.         }' }6 j: ^: H* P2 r# \; |
  36.     </script>1 C: L; j8 o3 Q9 u# i7 {: {
  37. </html>
复制代码

. g6 L1 y- d6 L. ~/ _: ~$ Y+ o/ g/ t& E
- L! C1 P% a% [& y) {9 T0 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 03:05 , Processed in 0.116494 second(s), 19 queries .

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