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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

" w% s- j  e: W' E. H9 U

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 9 Z5 l) |, H5 b0 T

) |% m" @5 B+ \/ J* _% \1 W3 n  Z. P( ?8 p6 @0 z5 ]* z6 u0 C! V
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    3 Z) O& l' N8 E! b! [1 R
  2.     }
    - K+ o2 ~3 `( ~9 B/ j% H1 |
  3. 6 q+ p$ ^+ S$ |' T& a
  4.     socket.onmessage = function(){
    " v8 O7 Y: F' R1 P
  5.         //在event.data消息数据0 }) K6 }! ?, E" l0 E# }7 n, g
  6.     }
    3 _& ~; y% e: O$ J( E

  7.   j" t6 r  D5 X# Z
  8.     socket.onclose = function(){
    ! G+ P3 e* J7 g0 k* @
  9.         //关闭WebSocket
    ! K3 o! a, `! e% X
  10.     }; N9 h, w1 g2 [/ Y8 L2 t% a
  11. ) m8 ~5 u: h9 X6 X
  12.     socket.onerror = function(){% ~/ C, K0 f) v+ X5 g( |
  13.         //错误触发
    1 D$ k" G) H5 K
  14.     }
复制代码

8 n  t3 L% t9 B$ ]" o' m% h( {& T6 K5 r( }9 @, d

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

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

- |* I$ o. U9 M3 E' t
2 f0 A) N, o6 t: G  I7 \4 }! q' ?  s& F4 b3 ^; }4 j9 a

代码附上:

  1. <!DOCTYPE html><html>! |. z3 {+ Y0 T) c  E
  2.     <head>
    ( c0 n! b. R) y8 d  N  u
  3.         <meta charset="UTF-8">" o$ Q9 n: f" O. U9 a6 y
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    % P7 t! I. t) r  Y
  5.         <title>WebSocket</title>
    : I; u+ j$ d# h/ U
  6.     </head>4 W* {+ }7 \: z: U* d7 e, S3 t
  7.     <body>1 t- Y6 K' P2 T5 m( B* J5 ?# I
  8.     </body>* p3 [$ v! [/ F& s
  9.     <script>
    4 R1 ]& }( I' Y% S5 Q' f7 y: v1 |
  10.         var socket;
    % ~2 I9 q1 a$ e
  11.         if (window.WebSocket) {* c5 U4 q. R! r
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    2 m# E2 u. ~, K: N$ y
  13.             socket.onmessage = function(event) {
    8 n8 m: ?9 e- o4 O: u2 O9 f
  14.                 alert("Received data from websocket: " + event.data);
    ' C3 I, }. K: n+ ^
  15.             }6 J. D" v( @1 F* l+ E; I
  16.             socket.onopen = function(event) {
    : W0 W+ P2 S2 e+ N, U! @
  17.                 alert("Web Socket opened!");
    ' w) \7 x( n' l+ E; O) z
  18.             };" i2 [8 O1 w0 n7 y( h
  19.             socket.onclose = function(event) {  R- ^  K2 v+ X" g. f+ O
  20.                 alert("Web Socket closed.");
    6 ~* p) ?- S; `3 B( u
  21.             };
    ' @% q; d& N5 T) o% d* g2 c
  22.         } else {7 v% Y& S! K; h5 ^4 y
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ) a0 p* n/ u, t/ I5 ~. |2 I6 f: F
  24.         }
    8 i, W' R6 p5 Y! v/ u+ d, k$ v
  25. * s3 j4 H, c$ S8 _$ a/ A
  26.         function send(message) {5 W, I/ s  B% |" B) g9 J
  27.             if (!window.WebSocket) {. d' g* {  p4 J2 ?5 k- l1 {3 v
  28.                 return;
      g& D9 P/ c6 f- s1 C5 \. M1 V2 v  ]3 d
  29.             }8 |/ z. U' w7 p) a8 y
  30.             if (socket.readyState == WebSocket.OPEN) {0 K' Y+ m0 ]+ v
  31.                 socket.send(message);: C- _" x- f0 d* K; y$ d
  32.             } else {
    9 F4 f0 |( @& o
  33.                 alert("The socket is not open.");
    6 T5 }6 n) F7 ]" [( g
  34.             }
    . n: p" {9 ~" p  g
  35.         }6 E) {0 |" |4 f
  36.     </script>
    . u2 H- C. x# j& I; w- n$ C. \0 R
  37. </html>
复制代码

0 {; W- U' l, B9 S8 {+ I; `, D. x0 M9 N. h
: r, R3 Y/ X9 z4 E2 l, }( X3 J. Y: D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-5-2 13:33 , Processed in 0.048831 second(s), 19 queries .

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