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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

" ~5 ]9 H# Q+ o) {1 g

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
, {: N/ j/ q6 P+ d
2 c. o' w' j, l. g9 C0 ~
5 D# {$ t4 C8 L& Y/ s该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开; o5 l3 |; q  t3 d
  2.     }' N% ?# v  Y, ]9 }& g" Q" j9 a

  3. 0 o6 [/ N! C! ]/ I
  4.     socket.onmessage = function(){
    : c3 U+ J- S/ V/ S
  5.         //在event.data消息数据( Y! p0 s; C' a' z) g# d7 H
  6.     }! V0 @! l. ?7 |
  7. % |9 O2 m! |% l# H* ?' B
  8.     socket.onclose = function(){
    ( G& m& ?8 ?/ F; F" A9 @
  9.         //关闭WebSocket
    $ L$ \, q0 F9 ]+ C4 g0 I
  10.     }
    1 X# g2 x* v0 v- o& ~- |( T
  11. 8 C, T$ C# {: z+ k1 T! O4 O5 T, P+ b
  12.     socket.onerror = function(){* p( B* P  l  h% M8 ~8 l6 K1 }5 e* W
  13.         //错误触发
    6 F! z! T, M1 m- |
  14.     }
复制代码
; `% ]8 G  r  |2 x7 n  `2 J

! W% o* q2 F  {% n

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

  1.     socket.send(message)
复制代码
) x0 m" o# b* p7 W
+ b# B, T. n: e/ z
* p! v% ~* |5 s# A

代码附上:

  1. <!DOCTYPE html><html>  G6 F, t7 ?5 W
  2.     <head>; R: @' G$ L" \; h1 n2 S# ^6 d. B
  3.         <meta charset="UTF-8">: W3 X9 k( L- g7 L) v
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    / i( M1 {% Y0 p# p, D
  5.         <title>WebSocket</title>% C! o5 ]9 a' c( V
  6.     </head>& ], [" m( f' q1 {/ V+ p" l5 x
  7.     <body>
    ! |# L3 Q& q) o* O( }
  8.     </body>
    - y9 {: R; A: y! w% L8 @
  9.     <script>
    5 A: X7 P: I, E$ V5 K
  10.         var socket;! P5 O5 n1 N, K, c( A% O) K/ Q
  11.         if (window.WebSocket) {
    7 F/ O# u: d/ N
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    * R* \# ~3 _0 U8 q! a3 N
  13.             socket.onmessage = function(event) {- q+ q- z* [- I# F: g. |7 ^! P
  14.                 alert("Received data from websocket: " + event.data);7 l: l% S( m" ]3 s8 B. I
  15.             }
    , x; f7 ^) k; X! [, K( d% Y
  16.             socket.onopen = function(event) {5 {. k" `9 u# l) \/ b0 [& W5 s! c8 \, ~
  17.                 alert("Web Socket opened!");
    " X0 F3 L5 ]3 n$ P6 ~
  18.             };
    / w. q4 p9 m8 U
  19.             socket.onclose = function(event) {
    ) h" L: @& o  h# R
  20.                 alert("Web Socket closed.");* p$ S7 @6 X% V3 O# X7 U& d
  21.             };
    ' A& H8 i4 J7 y' D: ^; M( e
  22.         } else {& ^3 M  x9 z3 K5 W# o
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ! o3 v6 d' j: P
  24.         }
    ! e; b9 H! B: w& J

  25. " O( t" m) P/ E
  26.         function send(message) {
    ) ^$ A( u2 @. Y5 o; t
  27.             if (!window.WebSocket) {
    0 N/ N1 x7 j3 w9 q3 h% o4 o9 l1 m
  28.                 return;
    ) B7 z# j: W& g
  29.             }
    ' H! u, f0 S8 T% k6 b' U, o& O- o
  30.             if (socket.readyState == WebSocket.OPEN) {: ]" ]% }, i7 M
  31.                 socket.send(message);* a' ?* v6 q' \/ ?
  32.             } else {
    + l8 ?+ X. D+ l* _. U
  33.                 alert("The socket is not open.");. u: F1 j; `, R: L& P
  34.             }+ d0 x- \; T$ G* _7 ~$ F+ M
  35.         }
    * K* f- C0 E. V; v0 L  m
  36.     </script>
    * D( _3 v5 J0 D+ i& z* V5 ^
  37. </html>
复制代码
- ?4 T4 c8 h3 H
  \! R6 L/ V$ a2 F2 b

( F: O- a8 Z, N9 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-18 21:01 , Processed in 0.107874 second(s), 19 queries .

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