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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15275|回复: 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# L4 \, W) p0 U

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
+ V# I5 b1 g7 C2 n; v0 c4 s0 G2 {* ~) P# s* k: H* m3 X  {2 ?& A
3 h$ B) r' q/ y6 C1 y6 I
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    . x7 P' O$ f& K2 D
  2.     }
    , M$ N" [; {$ K& \
  3. 8 M. [, V  L  V( p0 K/ C
  4.     socket.onmessage = function(){
    9 J7 w2 V# I6 u, z5 S
  5.         //在event.data消息数据8 a) U. G2 L& i, R
  6.     }
    4 [& F4 a( n8 n! C4 P/ K2 X
  7. 3 m' I4 J) {/ w
  8.     socket.onclose = function(){; H' Y7 O- t5 p2 f* {/ l' j
  9.         //关闭WebSocket! J6 @# L4 [5 H2 p) n
  10.     }2 o2 ^% c: d1 E; [$ G3 [$ Q/ [7 {

  11. % ]% H( i& S  k! r
  12.     socket.onerror = function(){
    5 L5 U5 S* h! O( |. F
  13.         //错误触发3 b# ^! M- S8 ?( Y) F2 {3 P
  14.     }
复制代码
1 P8 |1 `* R8 t" Y8 s5 @
. ?# q% b. H0 M- z. K; K  p

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

  1.     socket.send(message)
复制代码
. E. p8 ~: {4 k9 Z2 n

6 u* w9 S5 s# p( B$ W! D9 z' u& f$ t$ D7 N

代码附上:

  1. <!DOCTYPE html><html>) _5 t' p! ?+ F  ?& r2 j; J$ N
  2.     <head># Z/ l- h; {( I6 h- v
  3.         <meta charset="UTF-8">7 {0 ?! k; r  I/ @
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">+ [2 W! F: G3 D0 |; i9 D
  5.         <title>WebSocket</title>
    ( q% D" j: P  ~( M! o
  6.     </head>
    2 F& J! O* G, S  W" D
  7.     <body>
    ) X1 }: \8 M% }5 c# R2 ^! |
  8.     </body>- L! H+ C, C  l6 e4 ~  m, v2 B" k
  9.     <script>
    ! B7 l& d! H0 L' M
  10.         var socket;
    ) ~/ E$ ?# i+ q% t  J2 ~3 u, W1 N
  11.         if (window.WebSocket) {
    + }- e! L/ ]7 e$ @- m3 c
  12.             socket = new WebSocket("ws://localhost:8080/myapp");8 w: O& Z; L; m9 R& @& i
  13.             socket.onmessage = function(event) {  K. M+ n& G  Q! d. _& ]4 Y
  14.                 alert("Received data from websocket: " + event.data);, @4 j  E$ G. z* n# M
  15.             }
    " w  Y; n6 H/ N1 Y, L
  16.             socket.onopen = function(event) {+ e9 t% {% b; m" x
  17.                 alert("Web Socket opened!");
    . d& i9 p$ ?0 U9 k$ [
  18.             };' X' |; E# V$ \- j4 f4 V" W3 ?1 L
  19.             socket.onclose = function(event) {
    * W  ]( K# `1 P2 k/ k
  20.                 alert("Web Socket closed.");! i* K/ [* _" U/ [, P! Y5 S1 b" R
  21.             };% C6 b# L% K- h  [- v/ W
  22.         } else {0 o, z1 X1 H. l# [1 X
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    6 f% |3 Q/ U7 N+ [8 d
  24.         }$ l" x: y" _* Y  A. i% _' ]
  25. & p' q4 r; i8 b1 c% z) E, o" `
  26.         function send(message) {
    ; F) \% d2 K! L4 {. W8 Q
  27.             if (!window.WebSocket) {
    - H( @0 t- L+ A7 O; N3 \9 c* X0 H
  28.                 return;( X! Z2 ^/ j; }; Z- m" y" c
  29.             }! u3 C2 g4 W2 @2 t# j
  30.             if (socket.readyState == WebSocket.OPEN) {+ D  t7 v4 \  V; R) j* X: B" B
  31.                 socket.send(message);
    $ D! m$ N( R4 P! ^' _4 y
  32.             } else {
    6 b( E4 i$ a- ^7 S* b& U9 k+ C* \- X
  33.                 alert("The socket is not open.");3 L, f& a0 T5 u. d( Z
  34.             }9 Y5 V7 P# _; N2 ?
  35.         }7 k1 |) B: Z" y' y( v# m9 s
  36.     </script>/ X8 l1 |2 b! a
  37. </html>
复制代码

& f. m. P! E6 k' t$ Z# r
8 b" y9 g( I( [& \* m. ?7 A8 @/ Q( E- s. q# U6 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 11:46 , Processed in 0.057424 second(s), 20 queries .

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