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>);
复制代码* C% [- p- N$ X, w7 N6 a, M
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
' f% I# \2 J4 ?1 r! G' r$ Z
. ? ~' Y" }$ v U# L' K |5 n8 S/ p5 O0 i
该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){" O1 C6 ~% S: t9 X
5 s X ^1 y4 `5 u2 T4 S( @+ m- //打开2 u+ B8 y G- H) j8 N
4 x9 Z. q) g! |2 f5 @3 F: s- }& F2 W+ `8 l$ u& Q% h$ f- e) L
/ W( b$ B' I: Z1 w
# w1 i9 g% K) s( [- socket.onmessage = function(){/ w6 a. x8 ?% a. ?8 p3 N
) p Z5 y$ r8 O( C9 b5 S: s- j$ A- //在event.data消息数据
* V9 H+ t. c0 O4 [9 ^ - 4 b1 ]: j9 w/ Y+ G; F
- }
3 F% \; n% _% @% y. b8 o% c - 7 t0 W5 |, G1 ^# `) R
- socket.onclose = function(){) ~. ^ M7 K; F- }# j
- , c# [* b: i' ]8 C( Z2 D' ?- h
- //关闭WebSocket, {! x: ]% w9 ?1 {2 {, Q) E
. m- E# q# o3 r( {) L! r' C0 v- }
2 i2 R4 H3 ~% w: j9 g+ q$ l9 J - 0 Q% F. v9 m" B4 K( H3 o6 V4 {
- socket.onerror = function(){1 g2 y/ o" I5 i y* {
- ' Y# ~ U$ ^7 f! r7 b, N& L
- //错误触发
* {; H. Z+ L. p# u# v+ z) q - 0 U% H. S; J/ J: e. Q! n6 b
- }
复制代码
, m( T, @3 w" h0 F5 Z) k. U# B通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 $ ` w2 ~( T3 ^, t2 Q
% R" n z! \- j! l( I. \: N5 I7 |
代码附上:
- <!DOCTYPE html>! b4 J$ Z& U: J) O/ _3 U, s2 A
- <html>, L1 d& W% R. E) d
7 i: T" [- g3 m* N- <head>
" Q) ]1 _- r& R+ j" H) S - <meta charset="UTF-8">
! d8 ]& I7 s! ]; F - <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">1 M4 D3 ~7 r. ]0 L) {
- <title>WebSocket</title>
7 G( I3 I+ w3 _2 R2 {8 S - </head>
. X8 A7 h) a0 K; }
9 o% L% }2 T6 T. D- <body>
+ W, H2 r+ R. V7 F - </body>
0 y* B- ]7 _0 X, D - <script>
7 F+ f* Q) [# L0 F - var socket;2 A5 i) N* ?6 k" X( w# x
- if (window.WebSocket) { y/ b. } r) k. I
- socket = new WebSocket("ws://localhost:8080/myapp");
9 c' ?: `$ O+ U7 B2 w - socket.onmessage = function(event) {0 r6 _( Y; \# k" L) t" U n
- alert("Received data from websocket: " + event.data);: f8 U( c% Y7 _: ?* k1 V( @
- }4 C$ J1 `% f" Q2 X3 M+ I# t& P0 n% d4 }
- socket.onopen = function(event) {8 K( \- A$ |' C$ k
- alert("Web Socket opened!");
" V3 F, u8 E* g4 J- A - };
; U. _: q8 S" s4 y9 e$ ?# j+ Y - socket.onclose = function(event) {- w; x% i1 f5 e. e- Q& ]
- alert("Web Socket closed.");
( J/ K4 ~( I# r; m* ?0 R - };
1 S" O9 c* E) S8 |) a2 A - } else {! }7 f( Z0 n5 r1 |2 c
- alert("Your browser does not support Websockets. (Use Chrome)");
; r7 Z- o) O5 Y - }1 f3 {( L9 j1 n
- u$ W9 N, {8 ]9 o- O3 g9 c9 o" V- function send(message) {* U. j7 K) e1 C! b! }: L$ b
- if (!window.WebSocket) {) w; E) n0 @) D
- return;5 J* ?6 a! }2 |2 a
- }
' h- t6 S% I7 r - if (socket.readyState == WebSocket.OPEN) {
9 g$ @! I. d! A' f - socket.send(message);
% h1 Q- }* M' ^# [ - } else {
) p+ X! Y7 ^4 e, I+ S - alert("The socket is not open.");( z( d, L* I, p+ a' W8 q
- }+ ^+ _% x: p& e! ]! H+ v
- }
8 s# x6 Q& E; z! j$ @ - </script>
5 e) i& C6 }+ t9 S
& u) H% ]3 g# C3 q4 N7 a9 H- </html>
复制代码 8 a6 U$ x- I' h- [7 z
% A% W5 }/ u4 c" h W9 E% y; I
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |