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");
复制代码 ; ^2 v# f S0 N* C) F2 ~
与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ' K% _) M2 b5 {$ F% s2 H' S
/ Y1 M" E6 x& u1 I
o; N9 E1 u+ x/ P! x
该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){ //打开
; Y$ q0 \, e+ [& H - }
( c4 x) c4 u; q' x0 o7 ]9 e$ ?
. y# {4 l9 v2 L" q0 @- socket.onmessage = function(){
7 }2 z( T# T- c K2 W) I; ]& A - //在event.data消息数据+ x3 J7 @: r% W4 t4 D3 y$ j
- }2 f( o5 [6 `2 ^1 m! i
- 6 k! T! }- z2 l1 S
- socket.onclose = function(){
" P+ k+ f" D+ H. E& s - //关闭WebSocket+ E; t4 J% u3 D' X
- }& I7 H2 {, y" K1 j# Y
8 `' l0 S; F- L1 s3 x" u- socket.onerror = function(){
4 A1 u: G2 J' o - //错误触发$ ]' H6 n$ J8 a! r' b: n& f5 Q
- }
复制代码
' C/ a7 K0 r0 ~% X% b, {& z" w
5 Q, o* C8 ^2 \$ ]& W通过套接口发送数据,调用socket.send:
% g, R1 Z( n2 T5 u! ]" K! V O0 M
" `: g# G4 v$ s3 N7 |" }# K# M0 A+ w3 Z4 \" Y& Q# w. }. f
代码附上:
- <!DOCTYPE html><html>
2 d; y2 Q& e! C# s6 z0 B - <head>
8 r: ` d3 Z% v$ ] - <meta charset="UTF-8">3 \' U# X1 ~' t7 O; a6 u" h
- <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
8 b: Q$ J' Q/ ]+ p1 ~ - <title>WebSocket</title>
\/ L$ M' p/ [- v8 V: O, o3 C - </head>
4 g2 F: P8 x' h6 f4 Y - <body>8 \9 x8 S& F% `& Z+ a# O$ q4 n! c5 F
- </body>& J) ^: j8 R. k. y* ^% w1 R
- <script>
\: A1 R3 t9 b - var socket;, Y6 B( j0 }( q' N
- if (window.WebSocket) {
4 W* q1 U5 }$ ~) h/ R; T: G: b - socket = new WebSocket("ws://localhost:8080/myapp");
M+ Y# K3 a0 c7 V' A - socket.onmessage = function(event) {0 [ h$ L9 t) C' i
- alert("Received data from websocket: " + event.data);. g$ Q# f: w& D5 T1 X
- }! h" P! N' f3 p% K- J
- socket.onopen = function(event) {9 h8 `+ J0 S: W. |( g- v
- alert("Web Socket opened!");
0 f% X- K- ^! x - };
0 e3 t7 _- S% ]' _ - socket.onclose = function(event) {1 L0 V2 G, U6 W. r1 C- h
- alert("Web Socket closed.");8 D1 v( p7 X% @# m, t w
- };
/ L! V# a' g; t7 j# ]" B! _ - } else {; g5 F! t k% O: S# @- ~
- alert("Your browser does not support Websockets. (Use Chrome)");
9 @- X9 M2 u, e - }
# ~$ R: x% N) \) p: h. |, F" n
" L! P ~* G; V6 c+ X( a& [& I' Y1 H- function send(message) {
3 A y G% \, e, y - if (!window.WebSocket) {! t2 }9 [' ?1 Q5 C1 k
- return;
/ B1 n& D1 q1 g, a - }
( ~8 Y1 i) N/ f% @; J& d8 v - if (socket.readyState == WebSocket.OPEN) {8 H5 l j. c/ U9 ~+ f
- socket.send(message);
" R: E* O! q7 G8 Z& u: x' ~ - } else {
( J7 r4 v) W) A. ^! g - alert("The socket is not open.");% K) j) X& Q6 `: y4 f/ X) t
- }
% \3 _1 O# N0 A/ e" g% s - }
& E1 O0 X4 Z6 Z1 F8 K3 y6 u - </script>
* U1 I0 y% v: H6 R9 V - </html>
复制代码
% Z# r& m8 L/ }. j( u) m# _2 b8 E; r/ d n" {. I o5 L( m8 S3 ]
M+ g) {! x: R/ M/ W. \( {
欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |