您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11592|回复: 0
打印 上一主题 下一主题

[php学习资料] 浏览器使用WebSocket实时通讯

[复制链接]
跳转到指定楼层
楼主
发表于 2018-6-23 19:36:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

如果你要有一个支持 WebSocket的服务器(Java、Php等),可以在浏览器中使用一个新的WebSocket服务协议,来打开一个链接:

  1. var socket = new WebSocket("ws://172.0.0.1:8080/SpringWebSocketPush/websck");  
复制代码
' b5 H( Z5 I& [! ?1 @: k8 K

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
* {- ]9 E- ~' Y* R6 Q9 e
8 |7 z: Q5 ~! p# X0 o: Z) A9 o! N7 g' `$ P
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ( ]' C8 d' o7 U# v) ^: v; h  ]
  2.     }3 \- ^, C" Z8 y6 Q4 [
  3. ! k+ P& W* |* g1 ^' E
  4.     socket.onmessage = function(){$ h& Q' s5 D9 ^& i
  5.         //在event.data消息数据. N; W; \! W" T0 ?+ Z  {' Z
  6.     }/ y- k9 @: c+ w: w  [

  7. . C; h) l: c; L0 Q4 G2 I, k
  8.     socket.onclose = function(){
    1 U2 M7 q# X: z5 ~
  9.         //关闭WebSocket6 {/ N0 ^+ Y8 v7 |* d2 `6 f
  10.     }( Z6 b3 t1 n/ Q% P: J

  11. * p( @! t2 |7 r% ^% @
  12.     socket.onerror = function(){* {- w3 k* h% F6 K, G$ Z) v
  13.         //错误触发$ U8 E/ s' Y+ P) g/ ?+ [
  14.     }
复制代码
, m( X0 n* B- H/ |8 w( R: v

  Y" E0 V0 ^" H  N. g3 r

通过套接口发送数据,调用socket.send:

  1.     socket.send(message)
复制代码

  R' h( ^* g8 h7 u" q, ^
9 Q0 ?, k  r3 F- g' `% ]$ Z9 b) m
% N) I4 H) P8 j* T% B9 O# x1 u2 K3 R

代码附上:

  1. <!DOCTYPE html><html>; e! }7 P; K/ _' F7 _) j, j; v
  2.     <head>
    ' f$ ~* C/ a) X
  3.         <meta charset="UTF-8">
    $ a0 @. W7 v" _3 q( }8 ?. \/ Z) C6 i2 o
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    & k$ h: q" b: v, Z. y2 ~  {
  5.         <title>WebSocket</title>
    1 O. i- e* w" w' Q
  6.     </head>
    1 c. t. T4 ~, m  m3 ^  w
  7.     <body>& I- _8 m* y5 H$ R( q
  8.     </body>% b& z% _. w* S# i
  9.     <script>
    + N: q  L+ D; h) O0 N, f- ~+ B
  10.         var socket;
    ) h2 G' T' A7 |5 r, c& p9 K
  11.         if (window.WebSocket) {
    + \2 l7 V0 t% t  S% q3 o
  12.             socket = new WebSocket("ws://localhost:8080/myapp");/ H+ |/ {3 V( A- Q" i
  13.             socket.onmessage = function(event) {
    2 l* ~- y0 v% J" M$ X) {
  14.                 alert("Received data from websocket: " + event.data);
    . c8 G/ d8 w; M5 g8 [; N1 F
  15.             }
    * ^# p, y" R* K  G" W# B2 Y
  16.             socket.onopen = function(event) {# {& S9 `) k8 R" L. }$ h5 O5 L0 h! g
  17.                 alert("Web Socket opened!");
    4 U' ^2 U/ I) r6 x1 g3 l
  18.             };' ?; w/ h: h2 c
  19.             socket.onclose = function(event) {
    ' g+ _# e! N4 t0 g4 Q0 ?8 B9 ~
  20.                 alert("Web Socket closed.");
    " B9 i7 T. i+ g3 Y# I
  21.             };
    , g7 T/ G0 b6 M& O8 d! Z7 d) }8 O
  22.         } else {
    6 y( }0 W: v* [: W( u; r5 \9 u
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    1 a9 f+ C, j$ h, f" c' e
  24.         }: c+ z" A6 w7 M- v- e
  25. 4 H* N" F  e6 h
  26.         function send(message) {
    ' b& e3 ?4 U% S, N0 I5 b
  27.             if (!window.WebSocket) {2 O( L+ ^- K* \
  28.                 return;
    2 U+ a( v( n* P3 Z
  29.             }
    ( }, q9 y8 j7 _- P1 Z( M
  30.             if (socket.readyState == WebSocket.OPEN) {
    + K6 J3 u9 H- ~" L! q0 \
  31.                 socket.send(message);
    ) E+ ]( @. r* V6 t, l
  32.             } else {( j/ I/ Z7 X' O5 A
  33.                 alert("The socket is not open.");
    ) r: p8 }. A- k/ e& ?( @2 D
  34.             }( {6 k( |) N7 S: A5 X4 ^7 N% I
  35.         }
    + [0 G* E0 Q1 [* r
  36.     </script># x5 U) E+ r% g/ K# ?3 T
  37. </html>
复制代码
& K( p9 U9 j! [8 Z3 J" s2 j& i

* U, z+ y9 O, _2 g9 }3 b& U, l6 g$ A/ S  \) i( x3 A1 X4 [, n, G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:47 , Processed in 0.100018 second(s), 22 queries .

Copyright © 2001-2024 Powered by cncml! X3.2. Theme By cncml!