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");
复制代码
/ x: G: w# C. B& K$ V2 f; ]4 r与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
7 T9 h( m6 e% P
& n& K. P1 s( N0 _' f* g$ u' c, b. p I9 Y6 S: a7 b; l
该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){ //打开$ T5 O2 t- T4 Q& U h
- }. |1 L# }. d( z- G/ o, x' m
- 2 ?/ ]( P2 x! p
- socket.onmessage = function(){2 c4 S0 l* S% g; { @
- //在event.data消息数据
& b" z+ i, [ w+ M \5 [/ j - }
0 q0 K1 s1 i4 ^. ` - 8 R- t7 z& t" z- G1 O- ~ Y: k
- socket.onclose = function(){4 q( J, N9 a2 J# `/ h$ R+ s2 \" h
- //关闭WebSocket
0 m( r8 P2 `9 a - }* j# W) \7 p \* u0 V2 `% Y, o
- 5 ]. m# E' O" A- g( b
- socket.onerror = function(){
8 ^2 q1 L) `. w0 L! ? - //错误触发: U! [( b0 ~, \1 o* k, H9 D7 s
- }
复制代码 & F' d' X3 Q/ g' r9 V' y; E" n
( I0 `/ F2 A( ]; m) H5 K4 l: B; a通过套接口发送数据,调用socket.send:
* u0 c1 a- m( o5 Y
. ~+ V3 I$ T2 t
% I( T6 W* L1 `* }
代码附上:
- <!DOCTYPE html><html>
/ S) x: L; M1 g2 G% B# Q - <head>
& F; E4 V0 V9 x - <meta charset="UTF-8">! {, j) m& H# v% t
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport"> B" {/ i, i" A0 N
- <title>WebSocket</title>
2 w [. K( f0 K1 c- x: E - </head>% I" x% R/ C* l; B
- <body>2 {( Q6 b) G3 G
- </body>
$ ^. F1 Q7 u! w7 D( K6 r - <script>
3 w7 s4 J& _5 |* d0 y - var socket;
: i! C+ w j/ A. S" n - if (window.WebSocket) {0 ^" f1 P, |# y c0 b$ @4 t
- socket = new WebSocket("ws://localhost:8080/myapp");1 _% p) I- R4 ?5 ]1 ~; \1 m
- socket.onmessage = function(event) {5 a2 M# F! N# [3 W7 d1 ?: H+ s
- alert("Received data from websocket: " + event.data);
% Z% `3 t5 `) Z- s - }
3 ~2 F5 C$ o' D9 a - socket.onopen = function(event) {( D5 Q. }6 G! [
- alert("Web Socket opened!");7 J2 F* e( A" b: I6 k Q1 i
- };
- n* Z2 `2 M" V, W - socket.onclose = function(event) {
, S7 A# A( a6 K$ c+ R - alert("Web Socket closed.");
% t: q, G l& E - };
2 U ?# m5 h3 N - } else {. E$ m: {7 Z' W8 ^
- alert("Your browser does not support Websockets. (Use Chrome)");; [ B2 z. U# v4 [1 p M0 m! Y
- }* m! L8 g& W* u y' p; G
- ! u: M" e4 [9 V5 u8 Q6 @
- function send(message) {3 V9 x8 y: y! X* v+ i9 P
- if (!window.WebSocket) {
) K* s3 n6 u V - return;+ b! @& O; n3 \7 h5 k9 V4 c
- }! o9 [4 v9 O" o. H, O2 ]
- if (socket.readyState == WebSocket.OPEN) {5 v) e1 e7 @8 H* u- ?7 O% t- A
- socket.send(message);
: o3 ~5 Z5 A2 l; u# \: M+ ?1 L - } else {
$ X" T' U) `0 o' R( z4 x& F - alert("The socket is not open.");) N0 l+ N4 @# d E- d5 z8 h
- }$ p" _5 x' E& p1 U p
- }
) [, J' o9 R0 }" v1 [1 [ - </script>
2 R- z" Q5 |% c: G. G( N - </html>
复制代码 ( i5 ^5 K( a: Q4 |# O% l
3 H/ q7 p/ P6 \ V0 b5 G4 i- l1 P. q- h: }5 g
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |