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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14453|回复: 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");  
复制代码
) b+ m9 |3 d2 U* b* d

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
7 M1 ^: J+ g% [0 {" {
: N; Q6 `2 R( ~9 s7 v# j( o9 C
1 \7 c& v; ?) K8 F& m( f* U该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ! B- G) l% i: j$ ]1 W+ I, S; d
  2.     }' Q5 Q# O& E. r. Q; j
  3. ; L3 \4 k# R- T4 v
  4.     socket.onmessage = function(){
    ' O- W+ S' b4 B# s  ]% M& g
  5.         //在event.data消息数据+ q/ r; h) H$ b9 y! j
  6.     }/ m% e& f. j$ E/ g- ^
  7. ( o- L- M3 T6 |
  8.     socket.onclose = function(){5 y- @7 q' N& r2 f) y( h" b, ~
  9.         //关闭WebSocket
    1 B+ Y4 t& C  Y' _/ c/ f, K
  10.     }
      [* d8 K+ y% @1 k9 i# a

  11. - V3 [- f  U: ^; K% u2 w! E
  12.     socket.onerror = function(){
    * G5 x$ E) m4 f6 g5 m" L0 A# V
  13.         //错误触发
    0 ]6 o' Q' t7 @7 t+ o
  14.     }
复制代码

" t  [4 M( g+ e6 M, E- \. y# F3 X. l
9 M9 H5 q4 s3 P2 ]

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

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

* {/ l  e- @, t7 I3 h  d% e% j9 g3 A. U5 f7 g) v# b' c8 G

* f# W8 Y9 X7 k; Q$ h

代码附上:

  1. <!DOCTYPE html><html>& Q; A( R! }4 Z# g; V  _
  2.     <head>
    " \1 `/ Y4 s& Y- b' O. }3 {. X
  3.         <meta charset="UTF-8">
    : N& A/ }0 E- @8 o! `; p3 ^
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">0 M, [" x) a. o6 x4 ~' A& |
  5.         <title>WebSocket</title>0 I' m; s# J3 G1 S
  6.     </head>
    + A* X, o( C5 ~- ^
  7.     <body>
    6 ^6 h6 E: S& [6 \( U, {: e
  8.     </body>% n8 V; d6 p8 a$ K3 _+ q/ M0 s2 l
  9.     <script>! @! p8 `& |6 h  G' n# R9 r; q
  10.         var socket;
    $ ?9 ]) C6 h+ e- K1 Y
  11.         if (window.WebSocket) {7 M1 x- ~1 x  ?% E5 ]" h5 y( G
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    * n6 k0 G; x2 q$ z& V* ?
  13.             socket.onmessage = function(event) {; e, L- j% \: i* m, K
  14.                 alert("Received data from websocket: " + event.data);
    ( m+ u( l" I, a% H; m9 U% z
  15.             }
    1 V0 S+ r. j' h) ^- X! V- p0 x
  16.             socket.onopen = function(event) {
    ) a2 \9 x8 ]; ?6 R6 ?
  17.                 alert("Web Socket opened!");
    ' B. Y: F7 z2 Z/ I7 J# Z
  18.             };% g8 K/ z  G- ^( W# ~/ L1 M
  19.             socket.onclose = function(event) {
    * r$ p, k$ A8 l) y, z
  20.                 alert("Web Socket closed.");, }9 C4 {, v* \, P0 n/ R& x% Y
  21.             };
    / Q  B. S% x$ @* h+ H5 i
  22.         } else {% y- e! o9 k/ W- U
  23.             alert("Your browser does not support Websockets. (Use Chrome)");- K  G1 |3 v5 y+ T+ f
  24.         }
    . e. b7 P5 R: @; [" j9 }" r

  25. . A7 D$ a9 [" @) R
  26.         function send(message) {
    8 M& f) z9 h# o. T) ~( i( j
  27.             if (!window.WebSocket) {
      _+ o0 S5 [  S* q& @3 e# u; w+ u" [
  28.                 return;$ z" a; H* B/ q0 S! U5 G
  29.             }
    # m- @. \9 I$ b
  30.             if (socket.readyState == WebSocket.OPEN) {
    : ]8 t0 C. o4 \- R
  31.                 socket.send(message);* C. O; ]9 z0 h( }8 T% @
  32.             } else {8 L* f9 j( X- w3 m* V. g/ |5 W2 H
  33.                 alert("The socket is not open.");6 q. x' v6 i2 X) _! P' O
  34.             }
    + Q( e" h& ~) ^( o
  35.         }, |; l' Z; ?  I8 j
  36.     </script>
    . }: q+ U5 v: k6 ]
  37. </html>
复制代码

6 B2 r$ v2 q3 L! B
1 {- v# D# ?3 B3 [
  U$ p8 E% _6 u. N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:48 , Processed in 0.051020 second(s), 20 queries .

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