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>);
复制代码$ n# J' ]; A+ h9 c8 U0 z% _
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
; \1 S( @: Y* P
, p8 I& m5 C* Z8 H- g- _! E: {! q) H/ K' p- o
该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){: J* {/ f6 U9 P# c& j
5 J9 n( F' ^( I s* W- //打开2 a7 r# j- y! r0 O& \
, f: j+ k1 C! u6 v% _- }
) m# f4 I% Z0 g
: T9 _8 P, |/ E. `+ r- ( L6 M4 x0 [' d M4 e
- socket.onmessage = function(){/ B8 E1 Q4 }/ Z; [8 \/ g ~, {
- 2 o7 a1 S* D( q
- //在event.data消息数据
; j; f& O% n" }, @! m
% p' o; f! a6 H8 _# ?! K. N- }' p6 o$ m$ `( y, [
9 Z* z/ b1 m6 J( r% l1 D# p5 E- socket.onclose = function(){8 s2 m- W; v. V7 b# J+ q6 _
- 9 Z2 b: z3 ^5 S1 X ^ q8 Q
- //关闭WebSocket7 [$ N D: q( ~/ M
( w; R8 f7 U1 \7 v+ `+ d( j- }7 K' M Z$ Y, Z' O X4 N
% L4 h' `% N/ K) M4 Z3 [- l7 B0 p- socket.onerror = function(){
2 A0 a0 G. a" F, J6 O: i7 d
G+ N3 n+ ]$ F# t8 O- //错误触发
; `' o8 s0 A1 K ` - % F2 ^0 l/ _% L/ J
- }
复制代码
! F8 C# u& d* m) Y通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 ( Z% \; V9 O2 i1 k$ Q f( A
8 T" s# a7 d5 v5 H- n代码附上:
- <!DOCTYPE html>
, D6 l4 ?# N" L3 B+ b s - <html>4 w% P' ]) \6 @) E' r: Q/ [8 G
- 8 k/ H. O C: }
- <head>
) f- n( p: _9 `/ ~5 k8 n: @& \ - <meta charset="UTF-8"> g5 a9 J7 Q, ^% q: x
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">0 W; j$ }9 h, {% Y$ ^- ^6 y
- <title>WebSocket</title>
" G- l' j: K. ~4 r - </head>
6 v- ~' A2 q! H! b8 w& d
g) K' E2 k: c- <body>1 W' k" A9 F4 Q- M9 N; L& e" b
- </body>
|! ?6 a4 O. \- `. I2 a - <script>" M; f- w- N( y/ @5 [
- var socket;$ S+ s8 z$ J# I- \) _2 e# l
- if (window.WebSocket) {
; n4 F( w- l7 \ - socket = new WebSocket("ws://localhost:8080/myapp");
6 R* B. ~, ~; D3 J# E! ? - socket.onmessage = function(event) {
c& b2 A4 v" G, q - alert("Received data from websocket: " + event.data);
5 e% A3 V3 ?% I. `# ` - }
G# c5 O5 D9 f - socket.onopen = function(event) {( e: Q; v9 p `, K' l
- alert("Web Socket opened!");0 [: V$ ~2 O2 I; _# K) J
- };
3 r5 p% @! e! G0 x - socket.onclose = function(event) {
3 M7 q: J' G$ u% |7 r' r9 T - alert("Web Socket closed.");
* k+ K; e6 K7 G$ S- Z' V - };+ E1 N* ^) a; Y
- } else {
$ w, W9 j. m0 \$ ~ O+ `9 K5 a) y - alert("Your browser does not support Websockets. (Use Chrome)");! k2 V0 Q: h1 Z. E
- }( S/ G7 @0 d4 X9 w9 }7 p
0 x1 [/ k2 \' P4 X- function send(message) {
6 s* O* R7 ]: N6 J. k! S, J- ^ - if (!window.WebSocket) {
2 B- ~. h: [6 z9 T1 s/ h - return;% e- W" I0 n4 T& y% l! W! \. A2 _* ?
- }
1 i" i7 }' X( g2 E. d - if (socket.readyState == WebSocket.OPEN) {$ @( O7 U: M4 Q, R
- socket.send(message);4 R1 z5 Q5 [( ~: z/ O
- } else {
# r8 [) P L, H7 W" N z; x - alert("The socket is not open.");4 @# x/ R! y/ N5 k, x+ U# x+ L
- }
% H* e: Q: G" l$ Y( W - }
( w$ H' R M: s# q4 {6 r9 _+ ~$ m - </script>
4 E; n5 j5 q% u# x4 s/ P/ T C - 9 [8 u0 I; m6 E: N' ^9 N0 [4 @
- </html>
复制代码
. n: S0 F8 x$ e! ~& u# X
* ?$ C$ B4 @5 n; E
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |