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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11589|回复: 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");  
复制代码
: y- ^' M7 ?/ p4 e9 y6 }

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
* p4 b; `+ G* e! P# L/ ~  e4 R% Y; T" z3 i) @7 U. M( x5 c' N
; Z1 Q9 v4 P. l3 X
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开. j5 B0 _" x, Z% x' t5 S
  2.     }0 v5 }/ n8 |* v% x
  3. # x. {9 n4 ?" T  c: S; [
  4.     socket.onmessage = function(){: B( a. K  j7 q# i4 v9 G
  5.         //在event.data消息数据6 }9 s9 `$ Z3 J* G' e
  6.     }
    ; P* T3 w" T; D) z8 _

  7. * [8 C5 A, k- B# B( V
  8.     socket.onclose = function(){
    * s- o8 v/ a9 y& N( @. P
  9.         //关闭WebSocket
    6 S$ B' e% b& }+ D7 `- d
  10.     }
    + m) X+ j2 h- f' ?+ V- }
  11. 8 W# Z: W6 o5 R7 E/ B" q% Q
  12.     socket.onerror = function(){
    # V4 J; `2 ?" A3 u' g
  13.         //错误触发
    4 q8 y& u2 h! K; @/ s' h
  14.     }
复制代码
- R% _/ P" C3 _* v0 m- F

3 T8 {6 W+ C$ J4 P

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

  1.     socket.send(message)
复制代码
$ |0 B3 `( q& l! v
! o* s) }# U- D$ z" Y1 A

( H! y) [, x3 B% c

代码附上:

  1. <!DOCTYPE html><html>
    , A2 X/ {6 m2 }2 C; k0 p; R
  2.     <head>
    " E8 ]0 u1 m# K4 r7 D
  3.         <meta charset="UTF-8">) E2 j/ x3 L% F2 ], T
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    8 f* O3 ~  B/ r( u# `8 _
  5.         <title>WebSocket</title>3 c  O( S$ P$ Z9 V
  6.     </head>+ ?. N" A3 a" ^! ]8 h+ C, }
  7.     <body>
    - x; v8 P; \0 A6 D5 |
  8.     </body>7 Z. r' f+ ~3 ?1 q2 b( b
  9.     <script>
    & [! p# O/ l8 [
  10.         var socket;
    ; d1 u* y# J0 s& l7 @" A, d, u; r
  11.         if (window.WebSocket) {( p( I7 ^' Z! N- {. Z
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    $ v9 p* U  _/ @
  13.             socket.onmessage = function(event) {
    / G5 H  g2 P, P% E  U3 d0 l% ^( Z+ L
  14.                 alert("Received data from websocket: " + event.data);
    , v( g7 e6 {5 a6 Q6 n( v
  15.             }& H  ?! v$ a$ `  H( i7 R% s' i
  16.             socket.onopen = function(event) {
    6 D) f4 L9 q; n& t8 C2 I* N; p
  17.                 alert("Web Socket opened!");$ a( `9 U: u4 X! c
  18.             };
    / G+ z9 W: Q+ r# Z7 i
  19.             socket.onclose = function(event) {3 M4 \+ R  {* p6 U8 B! b/ ?  I
  20.                 alert("Web Socket closed.");3 r! q6 _% Y/ d) _( t/ U
  21.             };
    . V, Y% a1 {  ?8 R) g
  22.         } else {, @0 `' G3 x% [
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    , A8 t; O/ r7 F/ p* a, }
  24.         }
    3 ^1 w2 J# l0 `3 }2 o( r! S- d

  25. 9 m; U! P1 U  W. D, Q
  26.         function send(message) {
    4 d: `: J7 q; I: w2 |* z5 V8 Q! a2 W0 O) j
  27.             if (!window.WebSocket) {
    ' t* u  r( U" s: e7 ^$ P
  28.                 return;
    & P4 _# h  C1 t- l/ j- Q
  29.             }
    6 m: G9 I1 l: Y4 i/ p2 U
  30.             if (socket.readyState == WebSocket.OPEN) {
    7 ]/ O4 e2 _1 T) _' V
  31.                 socket.send(message);# B+ W* X- K; K1 m
  32.             } else {
    ' y! ^( \, n. X3 d# c
  33.                 alert("The socket is not open.");
    - x6 B1 A! m1 M8 |. e7 c. U; c$ @
  34.             }
    # A3 F1 k  Q& p( S0 }+ ?. [. n
  35.         }
    # }0 K: R) @& C  [; _
  36.     </script>
      T. j5 q+ i' {" x7 |4 n/ D* ^
  37. </html>
复制代码

" z" u( t4 M. o. D4 [
% d& Z0 {& h2 c: V; P4 B; q- r5 Q9 v8 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:01 , Processed in 0.106092 second(s), 20 queries .

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