cncml手绘网
标题: 浏览器使用WebSocket实时通讯 [打印本页]
作者: admin 时间: 2018-6-29 14:55
标题: 浏览器使用WebSocket实时通讯
如果你要有一个支持 WebSocket的服务器(Java、Php等),可以在浏览器中使用一个新的WebSocket服务协议,来打开一个链接:
- <font color="rgb(0, 0, 136)">var</font> socket = <font color="rgb(0, 0, 136)">new</font> WebSocket(<font color="rgb(0, 153, 0)">"ws://172.0.0.1:8080/SpringWebSocketPush/websck"</font>);
复制代码
: H, W2 ^ N1 i与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
/ X& O, \: [3 n4 }# N& M7 h8 R! f
5 p& N3 N, t& C" j
) Y8 f2 g, e0 b, n该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){
" _' Y' t' A: Q# [
8 B, d% I* P2 ]0 N9 y- //打开
" h" ~% |. `7 D7 V$ _ - 5 ~) w8 W5 F4 r& y
- }- D9 `) |6 |8 v* u
- 3 i- E2 A8 O$ O& q) [) y# H
- _! v$ a2 a5 j
- socket.onmessage = function(){ f; }8 w& N8 W ]" ]
- $ \4 D2 D" n( Z! s' C8 Z0 |1 x/ _
- //在event.data消息数据
2 t# t0 g3 l& n5 ~( u' J - - P% W: _2 u7 K+ r9 @" |$ J
- }2 \2 k/ w6 i3 l* u' r3 n( r
- / W; h8 Z$ t, ^3 i
- socket.onclose = function(){
2 a: }! J- w) w6 E; s
Y4 R4 b$ Q* t# ^' ^) g- //关闭WebSocket
6 a& _2 C1 a/ Z2 c - . o$ }, h- o: B( G, `( E* H
- }
8 D. U5 z% m M ]$ Z4 [
0 p; y2 @& r) y& D/ a2 L: ~- socket.onerror = function(){9 Q. G$ v/ O+ g$ E' q2 p) d
- 9 h, x, o6 r/ o( o
- //错误触发) d2 n# m/ j5 K. R; K1 [/ C/ e
- ; ^ O% O: U) Q" @( f
- }
复制代码
, E7 C$ _* J; Z+ v( d通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 " J0 M1 z8 W5 T
{8 ?6 c4 G# k$ `
代码附上:
- <!DOCTYPE html>
7 e6 l( I U6 p# Q - <html>: Y+ m) C( g0 S- Z& c3 i6 N0 v
- : ~: U, z, f2 n' R
- <head>0 E$ J5 S% ~+ y3 z6 G
- <meta charset="UTF-8">/ `* v1 z' b1 h: k( V
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> v. l- E* R3 P
- <title>WebSocket</title>: U0 t$ Y- C/ Q z; A; P
- </head>* H% r+ ^" t+ i9 M
- & z4 B4 L. H' B: l% { R
- <body>
$ c" h/ r7 F0 c! `/ R( R - </body>
/ i4 A8 t- |- h) M1 z- h" I - <script>4 {: d3 y4 C7 O3 L) \7 q
- var socket;
6 ?2 ]' C1 w9 H h7 T( A" Z - if (window.WebSocket) {! ^8 i( }: E) M
- socket = new WebSocket("ws://localhost:8080/myapp");
$ V9 b6 K& X6 n. G ~9 c q - socket.onmessage = function(event) {
) G) j* q4 h% ^+ D8 H+ _6 `5 _& K& B - alert("Received data from websocket: " + event.data);9 t- A+ y, V) [0 o2 ?9 L: @: z% n
- }. `6 n2 M2 i3 Y5 M" T( N" R; O6 r
- socket.onopen = function(event) {
5 j* b7 e5 K- c$ P - alert("Web Socket opened!");. s' P8 Y, u o4 Z2 x7 q
- };5 h% V7 y* U& t7 Q
- socket.onclose = function(event) {
, F1 Z& v6 j) c. O- N! ~ - alert("Web Socket closed.");( p! c5 t" S) G7 |
- };
% D2 H: `4 D1 i6 E. J. r# U - } else {( A, I; W/ F6 K
- alert("Your browser does not support Websockets. (Use Chrome)");
( v# }: e! Q: R5 i; H, b - }4 M/ ?9 ^: R' u3 o
2 t9 f; Q" t$ C7 Y( k, ~- function send(message) {
" x3 c/ T) F K. |$ S8 E0 j - if (!window.WebSocket) {8 v1 f z, L2 E: z
- return;
8 E( \: q+ n. q) t# K4 a$ u - }' M( M$ b- X! ]! b9 _/ C
- if (socket.readyState == WebSocket.OPEN) {
( M* c. J) }/ G8 S - socket.send(message);
0 b- @/ i+ l2 e* K1 d3 R4 a - } else {: Y2 ?) U, s4 `
- alert("The socket is not open.");. q6 F6 R; j+ u; b
- }; Z+ U/ |. ?- Y- ~' G
- }
- K; t# c) f2 y. h M - </script>
5 o9 x C7 N" O9 N0 h9 j' z% M N
. }& m3 C6 a' c3 b9 K8 f4 Q+ v- </html>
复制代码 R o; Q& C; Q o9 I4 B
, e) L3 q9 P) N" a
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |