cncml手绘网
标题: 浏览器使用WebSocket实时通讯 [打印本页]
作者: admin 时间: 2018-6-23 19:36
标题: 浏览器使用WebSocket实时通讯
如果你要有一个支持 WebSocket的服务器(Java、Php等),可以在浏览器中使用一个新的WebSocket服务协议,来打开一个链接:
- var socket = new WebSocket("ws://172.0.0.1:8080/SpringWebSocketPush/websck");
复制代码
9 v3 `7 Z9 k3 U' S6 T: K. o( l与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
: N7 G( U/ l2 p" Y' G" r) j s, U! i& C/ D7 `: w. u* l+ f7 ]
4 _+ V5 B" t+ t4 \. r
该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){ //打开
4 k6 J0 P0 t7 z+ `/ ~) p2 c! G2 |. F - }
6 J" V' X5 W) n1 w5 T9 Y- z
' M/ x! }$ o6 P0 e- socket.onmessage = function(){$ W v; I. J# T C9 L# `) T0 u' Y: y
- //在event.data消息数据
7 X5 {% A5 x; t# Q: N - }
0 J# r8 q4 h) u) a$ ` - % k" p1 g" p8 b
- socket.onclose = function(){$ V7 ~7 _( a0 ^- S
- //关闭WebSocket
; c0 A$ s& O- _8 ?/ N- y1 F - }9 P' N+ v! D5 t+ M& z
* B. R3 r" v& ~- O. z* l- socket.onerror = function(){+ }% ]+ k8 C6 u* `& n5 A# q0 Y
- //错误触发
3 b* W! ]1 Y& C) Z - }
复制代码 " o2 [2 _5 I8 y9 J% z4 i& Y
+ o/ D" s8 c9 X& A7 C/ h
通过套接口发送数据,调用socket.send:
4 D4 ?" s) |( e3 m1 `0 V6 W0 Y
2 Z( o$ R) N# V. ~1 j/ C1 V/ L' G$ p3 C5 P/ L2 W& y/ r2 u5 Z# _7 P2 H6 E" A7 K
代码附上:
- <!DOCTYPE html><html>9 t! z( `: K; W f0 a8 j
- <head>
" V9 `3 c/ z; H+ k) e9 S! q8 m - <meta charset="UTF-8">
: Y' |. S, }/ B# T% ^ - <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
# V8 K4 r. Z& V9 A( u4 O - <title>WebSocket</title>
' U* {$ S6 t a. I6 h2 C2 a - </head>
, K% ]3 e0 i3 B; j2 y! L7 U4 ]- } - <body>% D5 h& U: y3 G7 V! [- Z
- </body> Q2 R/ Q8 T- }: S! T" x( Q% v$ R
- <script>
. B7 s; S. u9 a9 C/ T - var socket;8 Z$ U1 G* i" e# Z' U
- if (window.WebSocket) {
% u! p) ^7 u6 R6 J% [ - socket = new WebSocket("ws://localhost:8080/myapp");( d4 [6 E, C7 ^9 K0 I5 [# `- ~
- socket.onmessage = function(event) {
( t7 f5 s" t( K - alert("Received data from websocket: " + event.data);
# y1 E3 \! Z, X3 G/ y) ], s; C6 o - }& }" x2 b$ ^% k4 e% i1 s" B
- socket.onopen = function(event) {
4 |; h, _1 d# L8 _( B - alert("Web Socket opened!");0 Q. F3 o( L9 Q6 ^
- };6 B8 y+ m8 M+ D6 r
- socket.onclose = function(event) {" p; t0 s5 j2 L- s6 [( g) ]
- alert("Web Socket closed.");5 n/ q {8 r Z) `8 r5 q
- };/ T, i5 \3 J3 f' v2 X! f0 }: K
- } else {( S! j0 i1 a2 F' e3 ^' M+ n- Z
- alert("Your browser does not support Websockets. (Use Chrome)");
0 w( F: `0 [' N5 f0 ?5 ]3 u8 H - }, m* |9 m q# E/ L S2 h
- $ E+ c& @2 q4 z: H, B% H" `4 ]
- function send(message) {
4 t6 }* J( I% Y: h9 s* b) f5 ^) f8 ~; i - if (!window.WebSocket) {* M, S a' u- ?* `
- return;, c' n% f6 a9 K. d6 W9 b$ t2 @( F
- }
! U) f+ p* T0 b - if (socket.readyState == WebSocket.OPEN) {* X9 {$ g' R2 }3 C# ]& ]7 a/ T) B
- socket.send(message);
# `) I% N4 y3 {- K - } else {
5 C. \" x; |* m: j - alert("The socket is not open.");. Q5 `& {3 w- v, v. [1 F
- }
! [( l7 ]( J& N3 F; K5 ~6 l - }, c! ~+ v: @$ \4 E7 Z% e1 h
- </script>$ k1 X# {- b6 X+ Z9 c" p
- </html>
复制代码
- V1 X3 ~* x& x' ?, P4 k
3 Q' C1 ~/ D) `; r" ~ `: X( d6 \5 a7 V6 k
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |