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>);
复制代码8 o- I0 d6 @5 D5 v
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 . R* d: n0 W! A9 n9 @ q4 Q
! A" [& s u; B2 D& D6 a
1 A7 `! r* Q F& n$ {" V该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){; B3 K$ Q4 W1 `& b
- * }/ l; l% R4 }
- //打开% _7 Y$ N7 m' t- C: z0 z" P" z
- 3 _& b" n: ^$ v
- }
+ l8 R' l8 {5 A$ q z - / @8 r) ~( s0 X* v5 T2 ]8 l
^. F8 H$ j" y+ p+ J- ]- socket.onmessage = function(){. `7 j$ Z3 Q% @8 o3 w p
- & b+ t: W" a' V, I; K
- //在event.data消息数据
+ ]4 {$ D# L0 {5 u1 I/ D" u. T - D" \/ |7 }* j' q8 k6 I
- }
4 h( @- g) K5 u6 C2 \ - + Y0 V5 E2 |; c9 a+ |, l$ l0 H3 u
- socket.onclose = function(){
0 U/ d5 g1 u! t' W8 G' `# x$ D
0 v' j8 r4 \) s+ B/ `- //关闭WebSocket) ], q9 i; f* {! Q) ?% l
- 8 _5 h" x; Q- n
- }% _+ j/ i9 B: J" `
4 i$ }2 Q) ^! |0 x9 _8 a- socket.onerror = function(){ ~8 g0 X& j4 ^
: ]* P, W p$ c5 q5 Q! l7 s- //错误触发" X- j% }6 w3 E5 n1 x; w
- / r% U5 {% U9 M4 Y
- }
复制代码 ' _( G( f5 v ]+ c$ e( ?- R% F
通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 ( N) C8 o( g1 U
+ S& n, p& e+ }- T) w* ~# t, [2 ?代码附上:
- <!DOCTYPE html>
5 [# Z$ z' w+ s' F: D0 E - <html>1 T5 r$ v6 s& e" t% A% \- b
- : Y7 ]' H+ W/ l
- <head>
2 e2 m3 z, T: [2 P - <meta charset="UTF-8">
" u" J1 {) ] M6 @( N1 F - <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">+ X) c7 v. k4 g& [( u
- <title>WebSocket</title>1 k' ]/ i7 f* g+ s" ~
- </head>) [2 ?. v) M& h8 w4 i
- 4 {( o# ?" c/ x+ h
- <body>
1 |3 e5 @$ O7 ?0 H - </body>
3 Q! i$ Z$ g7 n( ]6 e - <script>
* X* Q3 H$ |& C) k - var socket;
% z5 l- m, d" `$ `; y" V) p# b - if (window.WebSocket) {2 E' s) X; N* A' P( J( C- [, h
- socket = new WebSocket("ws://localhost:8080/myapp"); D( J2 r6 d! \- L: z6 Q7 P
- socket.onmessage = function(event) {& l k7 T/ O6 a! g! ^ p m
- alert("Received data from websocket: " + event.data);
" p" u$ l; `: `: g1 ]. W! \ T. K - }7 d7 r) ^7 Q1 Y8 E1 r5 A
- socket.onopen = function(event) {
. O" O0 I) G* j3 t5 r2 k - alert("Web Socket opened!");
1 d+ y5 l, k2 |4 d" `3 w$ ]1 B - };- f f" b0 E8 X/ e7 l2 N# K9 p
- socket.onclose = function(event) {, ~( Z9 [* s- C* n/ z+ m
- alert("Web Socket closed.");% m& Z; y r7 g8 |8 A% [
- };
w J2 T; |( G9 a' U( i/ v- M - } else {
' ^4 D' @6 E- a/ E5 Y - alert("Your browser does not support Websockets. (Use Chrome)");
" i$ N" t; n' ]0 }3 _, u- o - }
/ [# r l& N! Y6 [7 @5 ~( _ - 6 N) t ~0 f N/ ]: i
- function send(message) {" b* J5 ]. |( n: L4 Q
- if (!window.WebSocket) {
8 S, q; p+ @* V* R* P - return;
3 Y% y! J6 |+ O( U2 b! d- \ - }5 o7 @1 ~3 w: G
- if (socket.readyState == WebSocket.OPEN) {' t4 ~+ a( `! |$ f
- socket.send(message);
" C- I$ B6 X; i! F, K% [3 | - } else {7 D: @$ s6 i- N+ m
- alert("The socket is not open.");
$ v9 W: p$ c4 \1 G1 c, i - }
+ a+ |; ] i" Z' e - }/ [/ e _$ P8 I. M
- </script>$ Q( U) K2 D8 W- v4 Q7 t& d2 K. T) @
" O8 m9 s! P. Q% \& q: X- </html>
复制代码 0 F) C( H k, R* C+ t
. U: p0 a5 F) t+ e% [5 x. Z; R ]
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |