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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15271|回复: 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");  
复制代码
% q6 |) \1 n- [$ I' t

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 * g; ?( f# t/ K" q
% o( v; A" R  J% K, g3 N* |, }4 l
8 q" D2 s  U2 X$ z1 n& V7 M
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    2 u( H( B4 z: U: `+ J# y* S
  2.     }1 f6 j) W2 m% s1 M7 O8 m

  3. ( d. N! @$ A% d6 S/ p
  4.     socket.onmessage = function(){% s5 h$ q+ M' d. l9 c) J" e' a
  5.         //在event.data消息数据: d9 N' \. y/ d4 `* _9 |+ {
  6.     }. Z3 k0 P" ~* k) t: N
  7. 5 J! p' h8 D8 w
  8.     socket.onclose = function(){. B5 v& \, X4 C9 F; h; j7 t
  9.         //关闭WebSocket
    ; O/ E" W# g' n) B6 X$ y0 [4 m
  10.     }
    5 C  o, o' r* Q8 k% m7 \2 h
  11. : M, r8 y5 |8 P& q
  12.     socket.onerror = function(){
    : F3 a+ w( D3 l/ E8 Q
  13.         //错误触发
    2 ~% H, ^6 z" k
  14.     }
复制代码
% {) B! |5 h. |/ T* h

" O) J/ A8 q  d! }

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

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

) ^3 @9 p: M' H. k; t+ s4 O- @' T* [: c, ~) m# M# o
  G+ s9 u) R: s- G& z: [

代码附上:

  1. <!DOCTYPE html><html>* Y3 K3 f' v6 `
  2.     <head>
    8 m0 W7 t. C7 m0 _+ |) A7 z
  3.         <meta charset="UTF-8">" W7 x4 p2 F6 y- G' e
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    ! p% h! d2 z, Q
  5.         <title>WebSocket</title>, ~- i' t( i( |) s0 ^, Y2 F
  6.     </head>+ U' t! {8 t$ w
  7.     <body>
    % L! G9 ~9 W' k, C
  8.     </body>/ l. O0 y  S; K% N/ m! D6 f& A
  9.     <script>9 I& |* S8 m1 D7 @6 p& a
  10.         var socket;. `9 o( S( E7 D' g
  11.         if (window.WebSocket) {% x9 m; n( n5 [) g! x: c
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    5 C* T) M. |+ ^3 v  N4 |
  13.             socket.onmessage = function(event) {
    4 _4 M3 b4 w; {, h7 t
  14.                 alert("Received data from websocket: " + event.data);
    4 w' T/ o( g8 A1 }" j% F
  15.             }+ ~: k+ K8 q. z0 W" ]' {3 [4 N- p
  16.             socket.onopen = function(event) {' x; x1 R* D$ f. X
  17.                 alert("Web Socket opened!");, n* ~/ G2 V  j4 v) p
  18.             };
    2 p7 \) }) b8 q3 Y9 G
  19.             socket.onclose = function(event) {& I+ S  X, Y# U. A7 s
  20.                 alert("Web Socket closed.");' e" L) E4 ]( B- k/ s/ A3 I5 D* d
  21.             };6 Q6 Y& z7 m: X9 J
  22.         } else {
    * D( U3 _4 Z5 V. W7 @- Z
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    7 R+ I) f4 D: L! c& b% [
  24.         }  F6 v# h1 l9 d4 P: F# P
  25. # n4 Y) X/ Z7 `2 E
  26.         function send(message) {
    , Q! f6 ~  ~/ Y2 L# F/ g  Z# m" L
  27.             if (!window.WebSocket) {
    . i8 f8 g6 u6 b+ n
  28.                 return;4 T4 G: ~, x- `5 H* N
  29.             }" ^# Y9 t: j" o# u& m+ ?' j( i9 p5 q
  30.             if (socket.readyState == WebSocket.OPEN) {
    3 j% |- L* I4 h
  31.                 socket.send(message);( b6 j2 X4 D& B- {. _' f' D3 @
  32.             } else {
    8 D9 z5 K; ]6 G! t7 X: i6 A) k7 y% g
  33.                 alert("The socket is not open.");
    ; X: d3 R% Z3 p3 T8 ]
  34.             }- X/ ]& `  ~& F6 v0 w" v+ T0 C
  35.         }/ u; h& \+ c) o( N3 c. f
  36.     </script>
    ! {; K6 _! x0 ?- [6 G9 w* A2 q
  37. </html>
复制代码

4 q. N2 ~% k$ @  ?! V! W" x+ B7 \7 R; j# z
  p; ]- c: I0 |# L) p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 08:12 , Processed in 0.056532 second(s), 19 queries .

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