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>);
复制代码$ h8 d, N# G5 b+ {& q' U
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 " `/ ^3 `; d0 P. Q, p7 l2 y
; k f% S5 l) w0 |5 F- a
2 [& K, O1 G) u2 \6 O1 `. F该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){
$ r2 ~* k4 R. E0 ]6 q3 a' X - 1 J7 E/ X: g* a( M
- //打开. a/ \4 h" S& w1 ^" l2 r0 ]
# H. a& n1 N- m) i- }
8 K! ^& o0 B" [$ E6 D* Z
- i {$ e4 {4 q- o7 C
1 k/ T# [+ U: u2 Z/ j# Y9 ?- socket.onmessage = function(){
1 G3 A' O9 P1 ]2 ]
- m, `! t ^0 b" J( S- //在event.data消息数据 F% B2 C7 L' B4 r
- 3 [+ y3 z' N- L' C, a
- }/ [2 s, x3 h6 L% c& e4 }5 C
- n5 g, C! V/ w, {
- socket.onclose = function(){
: d' I/ D6 X/ H; M1 g4 K8 ^6 T, V
Y9 @+ l' Q$ {9 M# N& ?' v8 G; m* ]- //关闭WebSocket* P7 o* `2 ]- L" R
- ; y$ H9 e2 V/ F( v$ t: Y
- }
3 A4 e$ k7 D8 P5 t# {
* R" V. X: W9 I% D; j- socket.onerror = function(){
% ]7 a5 b1 M* Y, c2 a
9 E; j8 f, ^4 R% X0 A- //错误触发
8 P$ Y9 ?* t) v ?# d - . }: Y: f J- j# Z% H3 y
- }
复制代码
7 q5 _, [6 V4 \7 p% i- E通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 8 H4 A- m; H' f
, P$ b5 g _0 Y, j6 V代码附上:
- <!DOCTYPE html>; r) d8 B" l) X3 T8 m
- <html>
; }" }2 n$ X5 e7 q ] r+ ~" j
+ Z; G' _' t6 ~6 Q5 J( y2 u M3 N4 j" a- <head>9 {' k! j/ m+ w; s6 B" H
- <meta charset="UTF-8">
% ?: u6 P; ]+ ~: ^7 s2 S - <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
0 S4 \$ y$ r1 @ O - <title>WebSocket</title>
+ ]; S# a( ^! y - </head>
: h( q* B- e% W* ?3 I9 w% D: J' n& e - 2 k& k( O* A( L5 ~5 V( \* U
- <body>/ _ Z% J2 h# ~
- </body>
) p) x( \" K- I - <script>
$ [/ S$ Q/ \& O2 s - var socket;
7 C2 l! |& K2 t/ i3 H - if (window.WebSocket) {
: |2 D: F9 ^) `9 f1 \! r; A - socket = new WebSocket("ws://localhost:8080/myapp");) t8 d8 w5 }" @8 U
- socket.onmessage = function(event) {
1 c" K: u& A; T- g1 |$ D - alert("Received data from websocket: " + event.data);! v t( \7 c, b; \3 m
- }
' X1 N/ \% R+ t* y5 g" H( s - socket.onopen = function(event) {
5 ?& y: s! S- J# T - alert("Web Socket opened!");; \3 |# }+ }1 e$ R) Z0 B. f
- };
3 z) ]) ^! J2 L, C - socket.onclose = function(event) {
% ?5 z" s/ k9 C- M - alert("Web Socket closed.");& e& F) U% h/ _7 h/ D
- };, ]; l5 r% O! R* C4 d
- } else {
2 M. L2 v% p( }9 w - alert("Your browser does not support Websockets. (Use Chrome)");! S4 X9 P9 d0 A# u' s9 ?1 O
- }
3 V: @" a1 _( d9 _: P3 B$ E# v - ( _# u7 L0 |" d) k2 P( |, [
- function send(message) {: h4 K6 v) {6 d; s; R
- if (!window.WebSocket) {- Y' q3 ?" c& z2 q* H8 D
- return;
- l z0 x1 C7 s r8 a' j h! o; m - }
2 \& @/ j) k. D1 G& D2 T4 B - if (socket.readyState == WebSocket.OPEN) {
9 s7 f2 j8 H4 I: v3 ?( L! w: T - socket.send(message); E2 C- G) c! S- r9 ]
- } else {) P/ o/ X: z+ g# e) ]
- alert("The socket is not open.");
) h8 G9 J" H1 U% i - }
$ U% K8 h( l1 U3 x' C - }7 I0 \' @1 n3 r) E6 @2 U" g
- </script>
8 e4 c2 V2 F" X5 q) u1 `1 ~
5 k2 D- g" N7 c! J- </html>
复制代码
8 h3 U& U, w& A1 c: I8 [/ z4 S1 M( w$ q$ j4 d8 Y/ ^9 s5 t2 I
欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |