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>);
复制代码
+ D0 K$ r8 P+ H& G9 N9 p与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
; L$ [6 Z- o. g [1 v) Z" A5 g
$ @; M+ v( |, H该套接口对象有四个用来监听套接口事件的回调:
- socket.onopen = function(){* e+ U$ Z* K& g* A2 Z p; ^8 j% Q# R
+ g: \4 j4 I* q- //打开' h6 w5 N b: P% V( G0 V5 @0 s( Q
- ; d% G" }) r# c$ K. o3 I9 M
- }
# o8 T/ d! Q2 [! i3 a | - 8 u) Y# D$ b" @4 L Q
% ~2 D/ d0 O/ x5 B' I4 R( z- socket.onmessage = function(){/ [6 h7 a# O, s$ [( m
- $ d9 a& Y0 ]) w( R/ c
- //在event.data消息数据% ]; c9 ~/ S4 [& s7 d6 l1 K2 M
- 8 A" |1 z' p* e( d4 t
- }
$ s9 E9 ^9 V. k) h: Q
) \/ ?* t/ I% j% d7 M t" ^8 y- socket.onclose = function(){
2 H7 z5 T8 v/ |9 G; y& M
+ c* y a9 C- I( o4 n$ g* m- //关闭WebSocket
0 Q/ {9 V" U$ N% K+ z- V
* [$ i5 D3 _9 Q, R! Q- c- }
: _( R3 ^; _1 {$ J+ ]: w1 C
; }2 f! c/ Y4 V; V- socket.onerror = function(){( l* `; f4 l- D9 d* e; t& E8 b
5 H) Z3 H0 X0 ]$ E- //错误触发) \; ^& ^7 J+ r" ^- |) }5 g
- h5 G" [0 \' t4 x: p- }
复制代码 2 v" y' s5 W+ p6 z* ]& o! W* d
通过套接口发送数据,调用socket.send:
- <font color="rgb(79, 79, 79)">socket</font>.<font color="rgb(79, 79, 79)">send</font>(message)
复制代码 # W' V0 ]9 h2 M- v3 @
8 h" c( o8 e2 R: a5 e, {7 O代码附上:
- <!DOCTYPE html>
" y. j- v3 U4 V# r( w - <html>
1 Q- _& T% S3 ~- x5 g9 J' S* Q
8 d# x: e' m+ Z, K& v- <head>2 Q9 N5 A' |0 i5 B5 G9 Y: Z
- <meta charset="UTF-8">
4 j' j+ b D9 }' [ - <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">3 \. v5 E5 H. J6 I; o( M* R
- <title>WebSocket</title>1 e' k6 L5 \% V3 X. I: k- u
- </head>
/ ` t# C% R/ I+ D
0 ^4 s0 |* j5 n$ S/ M+ `) _ M- <body>
- ]8 }: E# [: I( [ - </body>
5 O( X, x8 @2 g5 b% i - <script>1 Y# K5 l0 g8 f' L% m7 ]
- var socket;
) [' |8 |( `8 x6 ]( a( O" `% M6 { - if (window.WebSocket) {
8 U3 Q0 l4 _2 ~ - socket = new WebSocket("ws://localhost:8080/myapp");
1 V# n* d8 P8 e; u, _ - socket.onmessage = function(event) {
) l) i9 D1 }' B1 q3 S - alert("Received data from websocket: " + event.data);7 b) f/ _* n8 B' D. h1 s; @3 ?, ]3 |
- }
' r* q, G4 m+ Z. Y - socket.onopen = function(event) {
! F) ?' E# e4 B& e1 ~7 d- ` x# X1 B - alert("Web Socket opened!");
1 Q# @! s d( g - };
, U; a$ b/ e( g. @1 z: A1 o - socket.onclose = function(event) {
5 a+ H. K! I+ T# y# k+ x - alert("Web Socket closed.");& g$ W4 L* v/ x
- };
7 P/ f. u4 `; `% j/ u N6 \* @: x - } else {& e1 M% s* I- j6 I
- alert("Your browser does not support Websockets. (Use Chrome)");$ |! E: {1 h: I: Z' c# ?: Q& `
- }* D5 r1 J. I2 |
" Z3 j' K- b, u9 d: v! `% b6 _- function send(message) {3 h. e( e5 K) F9 I7 k
- if (!window.WebSocket) {
$ B# w, D& I# v* R - return;
4 j& |& E4 E k, W - }
8 n! ^2 _2 W; n0 K# |5 @/ m- N: h+ ` - if (socket.readyState == WebSocket.OPEN) {
) c/ M3 e7 o: \ - socket.send(message);
3 p" f1 |$ X. n - } else {4 S5 w$ e1 ]- ^
- alert("The socket is not open.");
( ^$ A+ d* n: q6 U$ Y% v, Q/ N - }
, a) c5 R, B: x - }
8 z; S0 n' Z3 h- W9 I W& m - </script>& i( V4 F3 _2 ~" i: C3 B
+ H0 \8 v. Z4 G6 M* [- </html>
复制代码 2 g6 h5 u/ A; K9 ~. J3 z
7 {: p3 L# m! Z# d7 ?
| 欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |