|
如果你要有一个支持 WebSocket的服务器(Java、Php等),可以在浏览器中使用一个新的WebSocket服务协议,来打开一个链接: - var socket = new WebSocket("ws://172.0.0.1:8080/SpringWebSocketPush/websck");
复制代码 ( d) u" _" g! @4 A$ f9 n" Q* P
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 1 s% {7 t. }: n( w& A" w; O: |
) k# ^8 c1 m/ }0 N$ i2 z
' M. z) C& N4 p1 ?0 X该套接口对象有四个用来监听套接口事件的回调: - socket.onopen = function(){ //打开/ o/ ~7 z/ N) J% U' k+ c
- }
$ J# ] T! X( Q, w8 x - % y7 }/ F: L* C P( X2 D
- socket.onmessage = function(){
& ~1 `2 j" Z, m. r3 _9 R% K - //在event.data消息数据2 n: ~* s3 [: K- t
- }
$ S1 N9 @" i! B. L9 x( p0 x
; e, X4 D, w4 g- U+ T- socket.onclose = function(){# }2 X1 p: M7 H
- //关闭WebSocket
) V; E9 p: I2 @/ m. O. f$ b - }
4 q) T0 Q* m1 g8 x - 0 q1 s. m( S/ X: T0 E$ i2 K
- socket.onerror = function(){
& P' A7 F( a; u! v( s" p - //错误触发
9 d/ v- z. M8 J- a - }
复制代码
: z6 @! e. v( x' ], R1 S6 H$ Q9 G1 R7 ?- t" t
通过套接口发送数据,调用socket.send:
( b% i) Q- L& i. u- T7 G0 H M; {1 ~$ X1 G$ B; J2 r! a- q! y
/ I) l e" @& r/ X: { P$ U
代码附上: - <!DOCTYPE html><html>) A* v$ z8 r6 { w7 `% m
- <head>
+ l. v1 ~' ~" Y& F6 \8 Q6 ^/ o - <meta charset="UTF-8">+ M2 W5 T9 }2 e& C3 q) w) J" a
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
& ?' \+ g; D9 K! e - <title>WebSocket</title>3 X9 S; x8 w) s7 O! _" y
- </head>
# R: `% F u7 V; V: b0 C9 G! S - <body>
: e# L2 X) ]6 B. O9 H - </body>8 J8 I0 v- P* F0 l
- <script>9 ?# u) l" R; D8 T2 \ ?
- var socket;* q) T) T& j: E, o/ ~* W
- if (window.WebSocket) {
/ H3 I( u( N5 `, |$ A" \ - socket = new WebSocket("ws://localhost:8080/myapp");7 b: ^' e" _$ X' I2 n/ k4 H+ ^3 r+ B
- socket.onmessage = function(event) {4 @- J% j8 V' i: l
- alert("Received data from websocket: " + event.data);/ D8 y+ R5 l- B
- }
6 u4 `3 a! e( z6 b$ R) H - socket.onopen = function(event) {
1 ^9 [3 B6 C& _4 I0 P. j1 W' Z - alert("Web Socket opened!");
8 d0 X ?$ Q+ } - };
8 U2 B$ F# O5 s5 `, m1 b- p$ C1 ? - socket.onclose = function(event) {+ \# N9 j. {; f+ Z( c! k
- alert("Web Socket closed.");: G: c' `# g3 y; {# P, e& A; |
- };
$ |5 d: G7 i. n- Z5 C3 I - } else {0 `2 I0 ?, `' ]: C* M4 N0 J
- alert("Your browser does not support Websockets. (Use Chrome)");* c3 q, e& U0 b9 t# e8 z! m8 d$ X
- }- f6 R# A2 a! D: t s
' N% X% `# v" ?$ u- function send(message) {
' f# X) T: b a2 h G$ w. `- p0 { - if (!window.WebSocket) {% L# s' s& K m: M. \
- return;
' K1 M" K. |/ W. P5 D5 t - }
3 g* S; |+ j# V& k1 F - if (socket.readyState == WebSocket.OPEN) {
2 @! c$ i5 G+ P+ ^4 u - socket.send(message);) }$ ]+ q* B. a/ o0 H, j8 I
- } else {
% n! T$ [: g C6 t- S - alert("The socket is not open.");
& ~% {6 G; g z" c - }
1 s% u7 T3 R |, n% r - } b/ \# K) e1 _( K) F k a# i
- </script>
. m; Q( y% V2 l' c; R - </html>
复制代码
. I. F% e* u# @; K+ Z* A: f1 c$ O% B- Y0 P1 ~* P j
N) ?, a7 b% }) j$ I4 b# b. m |