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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

. i4 s1 Y9 X- x: l

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ( _  k. j7 h. P1 b( _, W

& _* ~  L# }+ l
( E5 E/ B( F) s! |; `9 ?" e该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开) }& U+ |% f( _7 g  v$ |
  2.     }1 G' T; [' D' d# |6 N

  3. 2 u/ W5 e) c( _, c) L
  4.     socket.onmessage = function(){: T- p! c8 S) [! p& j0 \: o
  5.         //在event.data消息数据2 n- Z& k- c: Q7 b. I
  6.     }
    # ^( n- E1 e1 r3 l7 {

  7. ' s4 r0 q, {9 v; k3 a
  8.     socket.onclose = function(){
    " R! m% c/ Q; v8 t$ P' p# X. W
  9.         //关闭WebSocket
    8 s+ Y  _8 A2 l) w$ }4 g$ p* Z, T& T
  10.     }$ c1 d4 y! [. v- U8 Q5 e

  11. " c- d8 h' b7 B3 D2 L4 [
  12.     socket.onerror = function(){
    5 M% Y; p% J9 X& r1 _/ g0 E* T2 {
  13.         //错误触发
    : e& s$ j' x9 d8 m8 G
  14.     }
复制代码

' M& K8 e+ f" F- w) K5 F1 u% f: N; j2 b1 H, V

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

  1.     socket.send(message)
复制代码
  r: |  W% @9 w( c$ [9 Z. `
0 ?. S+ C: v6 s% e
7 M! Q& T4 h1 h4 z/ l

代码附上:

  1. <!DOCTYPE html><html>
    ( G# t6 A; K# z3 b& V# y# \
  2.     <head>
    - O3 G) T) v& t* o; E1 P$ M
  3.         <meta charset="UTF-8">) w1 i6 i6 i; F! E: b  h
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">( s) J. J9 W3 E3 R# E0 q+ K  j* r3 q3 i
  5.         <title>WebSocket</title>' k# X: D' v; Y
  6.     </head>/ g" T$ K1 Y4 t8 _) c8 N
  7.     <body>1 p3 d" r, k# c: D9 L' q2 P
  8.     </body>8 ]! A" E% ~1 F
  9.     <script>; \  a+ z+ {9 g# V( k$ s  n
  10.         var socket;8 f' J; A; A/ }, O; ^
  11.         if (window.WebSocket) {
    % f2 K; n, J# b7 t
  12.             socket = new WebSocket("ws://localhost:8080/myapp");* F6 z$ a+ R: [: h0 k
  13.             socket.onmessage = function(event) {! ^5 V" W" U$ P$ O& p6 H1 y
  14.                 alert("Received data from websocket: " + event.data);
    % V0 v# U; p! O" C
  15.             }
    3 c! q/ ^! {( M; q
  16.             socket.onopen = function(event) {
    5 Y+ W, e7 t5 Z
  17.                 alert("Web Socket opened!");
    ( r. R: i4 F6 r" O, P
  18.             };
    # {: G8 ~, D4 U9 N1 ?2 w6 H- P, `
  19.             socket.onclose = function(event) {. \% C, B' g4 `3 D2 Y6 }7 E7 c7 Y
  20.                 alert("Web Socket closed.");" E& H8 V* F# K0 o0 \
  21.             };5 \4 X+ k# H! Y
  22.         } else {4 r# |& b3 H7 h) {! t
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    / P) y# l! ]3 ], D8 V6 F4 u
  24.         }' e" C3 u  t' c: ?% D

  25. & r4 R' G, t8 o- `. z0 a# \0 r
  26.         function send(message) {/ a" P- }- \9 Q. M/ I4 {; F9 O
  27.             if (!window.WebSocket) {
    / q0 P2 R+ O" d% c: x9 g2 @
  28.                 return;5 b. ~4 `) M1 g9 h" b
  29.             }6 u4 g9 v9 g: q- D: S
  30.             if (socket.readyState == WebSocket.OPEN) {
    # i$ H: Y: P- A2 k* {0 L
  31.                 socket.send(message);1 x! ^+ W% e  ^. h
  32.             } else {! ~; K7 P( D4 d" d3 Q5 J
  33.                 alert("The socket is not open.");
    " V% p7 v$ D: m3 y; Q- u
  34.             }
    0 ?# f5 `0 r5 q; z
  35.         }1 l5 [6 H* m$ O  R
  36.     </script>
    ( K! P: i. A9 F4 n
  37. </html>
复制代码
) Q0 P$ e" [$ X

* T2 s8 K+ g' ?7 Q' d. @  c3 [1 @  ^9 f6 Q* d/ H3 D' X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 17:11 , Processed in 0.107457 second(s), 20 queries .

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