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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

/ ^. |( g$ A1 |3 E9 b  \, I

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 - v6 z6 b5 l! H" k4 n; }* a) t* e' [

. L7 w' }  [0 T" w
1 e0 W! s1 ]* ^该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    . g, W& {9 |3 _; H( s
  2.     }
    : e% c- f8 K3 t' I, r; c

  3. ( n, |6 ^1 _+ j7 T! T3 ~
  4.     socket.onmessage = function(){6 u4 [% r5 M* U/ c2 B/ a  D
  5.         //在event.data消息数据) }9 q9 O; X: M  j6 F. W7 [; w
  6.     }+ V" C" D' z  F1 W. o

  7. ) V$ {. _/ k, x8 _2 M6 F+ w* ^
  8.     socket.onclose = function(){
    2 |' m5 B; k; i4 F0 U( |
  9.         //关闭WebSocket
    ) q: f+ l9 K: ^% p7 C
  10.     }( O( b# S, E, @# L2 ~- N/ o$ {4 A

  11. * _; R) Q% I+ P/ t, L/ _) H4 h3 w; F) x
  12.     socket.onerror = function(){
    , Q: ~" E1 n6 R1 c6 e
  13.         //错误触发8 p* r* e' X) j0 h7 n* j/ k0 r! j
  14.     }
复制代码

8 _- i' ]3 G# m* J4 x  U6 v# j9 S) V9 G' c& v! \# v

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

  1.     socket.send(message)
复制代码
5 r9 x7 M2 ?. b) C2 B: G" P+ ^0 N
( l; \3 x* s  W1 k" g# x

7 x; W* {& [/ p

代码附上:

  1. <!DOCTYPE html><html>
    / N7 Q6 i0 g' J; ~3 W
  2.     <head>
    3 {& D+ ~" ]7 d2 F1 T
  3.         <meta charset="UTF-8">5 v; W) _2 H* ^/ j! q1 l9 T! I% s5 u
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    , f9 L5 D& H3 S
  5.         <title>WebSocket</title>- |: G' H; ^9 w
  6.     </head>3 s3 r* U8 I) ^3 o9 `2 M- ?, h
  7.     <body># u0 C7 A: |% J1 O0 Q* k. Y
  8.     </body>
    6 q: o. {$ M$ D
  9.     <script>
    ( ~% ~* O; c1 E& Z* ^& Z
  10.         var socket;
    ( Q) c! E& k* Y! d) @
  11.         if (window.WebSocket) {
    7 {2 D8 {  W+ I2 w0 a
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    * C2 n: q' ?; M% G4 g
  13.             socket.onmessage = function(event) {- N$ r, [2 f7 H( j8 U& z6 ~* m
  14.                 alert("Received data from websocket: " + event.data);
    & ?1 I) a$ p2 y9 u% g' y
  15.             }
    ( [) A& m. ?' y
  16.             socket.onopen = function(event) {
    & y; ^) ^9 R0 d, r' p
  17.                 alert("Web Socket opened!");" d0 i0 `7 H2 w  D& s% H7 R+ R
  18.             };
    : |- I; Z# }5 z4 D
  19.             socket.onclose = function(event) {2 Y( S$ l7 G5 b' X
  20.                 alert("Web Socket closed.");* T9 p( w& M! t
  21.             };
    7 O, N7 u1 k. C8 ~" Z
  22.         } else {
    ) c6 D1 R, g$ |$ X; X6 ?. f$ s7 G9 P
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    / A* |# F# ]- x
  24.         }  |! A$ }, ?$ O* u* I! F% q, c
  25. 2 ~7 ]- l; H  q/ C2 D+ S' k
  26.         function send(message) {8 Q. s1 C. F. G; d
  27.             if (!window.WebSocket) {. A* m/ n5 S5 |3 ~1 g8 g1 R
  28.                 return;5 X4 w5 e( N1 i7 Q% B% ^1 M
  29.             }1 k# w* e) z; H' O
  30.             if (socket.readyState == WebSocket.OPEN) {8 Y7 g/ a' n4 ]
  31.                 socket.send(message);
    3 s0 s  o2 P$ i1 U) m8 {
  32.             } else {
    ! Q" H  P  i) P8 s
  33.                 alert("The socket is not open.");
    5 S8 e& l# v0 _2 H
  34.             }
    " _5 l$ U* U2 d- `; q2 s: V2 m. g
  35.         }! E1 |6 {6 v5 q9 G) p+ C
  36.     </script>* s  ^) `- \' E* {+ n3 I% e+ y. i
  37. </html>
复制代码
( a, ^8 d1 N& {0 `
7 F* J. Y+ M% M7 M: D1 a

) @- C: a* _4 M* K0 I( S9 E! c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-18 19:23 , Processed in 0.113967 second(s), 20 queries .

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