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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11570|回复: 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");  
复制代码
/ [6 s" P4 K; x6 S9 ^6 ?0 b( n: E' o

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 9 `# m6 U4 r* ]
9 x& Y2 [+ T' _) @
1 l0 Z4 p- [3 E6 d7 H5 u
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开3 R, K% \0 D4 X: ~) C( e
  2.     }
    8 D+ }7 P5 N! G# G

  3. # q- C# k4 a' E
  4.     socket.onmessage = function(){
    6 B1 a, O/ ^+ e7 P% c5 q
  5.         //在event.data消息数据4 J: c1 X" e, \" ]# s  W
  6.     }
    9 U, y* U( f' T2 s
  7. $ p* i/ _' f& A# ]
  8.     socket.onclose = function(){
    : i1 O; a  S3 d( y3 [6 k  |7 l, q
  9.         //关闭WebSocket, \6 u" e: S7 _9 k
  10.     }
    ; k2 G% v; Z2 A: a9 n
  11. 5 S8 q, S4 J4 q+ @1 h; O/ H$ ~
  12.     socket.onerror = function(){
    ) D; w/ z8 v+ a- o" f+ D8 _' r
  13.         //错误触发
    ) s% ]- q0 z* k1 B
  14.     }
复制代码

# M1 T' _- F8 l' j0 G4 G. X4 ?' c& L- e0 I4 Q1 P( E

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

  1.     socket.send(message)
复制代码
# l( D+ ]) v+ j
4 I: F* U2 A4 }
9 q) m4 y+ n1 s4 ^

代码附上:

  1. <!DOCTYPE html><html>9 B) D2 u. D1 y( k* `
  2.     <head>. M' X/ q# r7 y8 v( _
  3.         <meta charset="UTF-8">0 h0 u# h; [" S$ K* u
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    , q6 n0 J6 h0 t( G8 i# d
  5.         <title>WebSocket</title>& p% C# J% Q7 s
  6.     </head>
    1 s, [3 h, k( }0 O3 {1 Y
  7.     <body>( g/ h7 v6 K5 v3 m
  8.     </body>
    : j  C9 `$ F& H/ ~- q$ |: m
  9.     <script>' {) w% Z# @% H8 c5 o, z& V
  10.         var socket;; K! I" }/ c7 ^- ?2 y- I* o
  11.         if (window.WebSocket) {
    ; `" z0 C9 s! [4 g% U" i
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ; b6 |2 _$ a( _! {5 P$ m
  13.             socket.onmessage = function(event) {7 _# d2 z- V, l1 d! U
  14.                 alert("Received data from websocket: " + event.data);, n: u5 s. N5 d: C
  15.             }
    1 f2 H! R* x- A0 T+ h  `
  16.             socket.onopen = function(event) {
    5 a- ]- \! l% s# B0 ]0 ?9 S
  17.                 alert("Web Socket opened!");
    ) ^# P4 a" I( K; J
  18.             };* D" i- C) S$ I( F7 A
  19.             socket.onclose = function(event) {9 U; ?- D) D( y% K
  20.                 alert("Web Socket closed.");
    / Z4 b0 N2 n$ o, Q6 {, `2 X
  21.             };4 c. }: E- U, l: v& R
  22.         } else {
    1 v0 B8 W3 _" b, E. x
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    9 Z2 m( y# L8 M
  24.         }
    5 W! W6 T8 o& _$ \( `  ?
  25. * K! B3 G# D# }) W
  26.         function send(message) {) D4 K2 G% {4 u9 y* j2 S4 o
  27.             if (!window.WebSocket) {" \0 j) w) j3 {* N8 Y: d! {% ~3 G
  28.                 return;3 F6 t. x0 n- G/ H: E/ Y; P
  29.             }
    4 p# q8 F* N: S- |- f) h
  30.             if (socket.readyState == WebSocket.OPEN) {& h  ~: N/ w7 s, `4 \. f' [
  31.                 socket.send(message);: V2 A2 b! n. z
  32.             } else {! f- b* F8 e: T  u5 e) u9 _
  33.                 alert("The socket is not open.");* b2 A# @5 g- L; y' L9 [1 f
  34.             }: r2 z# S" W( Z  W& a
  35.         }; S7 W" L3 T( |: t
  36.     </script>
    1 ]% W4 m# r# ~4 _9 v3 E5 W$ b
  37. </html>
复制代码
0 `0 A% e' ^) Y5 ?' b

: ~, d0 l/ F  |! q% F) h( q5 V- J1 Q; Y! |) G: I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 15:55 , Processed in 0.115285 second(s), 21 queries .

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