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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10051|回复: 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");  
复制代码
/ d1 m$ E4 Y2 o% a2 y( r

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ; k$ Z$ ^9 l5 v$ `- E+ @. Q- F
7 j5 i/ o) P: c' o  ^; B" _
1 ]  t: t; e* e8 w5 |3 p
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    : A0 r5 h# i6 h3 `! _
  2.     }
    2 a+ w+ K1 C) G% r0 Y3 x

  3. ' f9 _" B# `3 @
  4.     socket.onmessage = function(){
      g0 T1 g0 D+ n# _
  5.         //在event.data消息数据4 P8 X, `5 W. ]* j/ v
  6.     }
    % u% ?/ `9 a7 {& I4 V: [3 F3 L0 C
  7. / o& o3 P! N5 L2 ]2 }% C
  8.     socket.onclose = function(){
    ( y6 ]) C# R- I4 t2 s% O
  9.         //关闭WebSocket0 T/ q* o: t# R/ U
  10.     }+ B9 Q( L( b* B- Z* R, r4 B4 y
  11.   @: B) x/ e) M2 L
  12.     socket.onerror = function(){
    8 O1 u4 G6 b- ?9 x
  13.         //错误触发, U* b( R6 L. R! j6 U
  14.     }
复制代码

% r9 h- J1 f& f; h4 v( Z2 G; r( V
- K) ?* p/ e; Y5 _4 f, z

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

  1.     socket.send(message)
复制代码
' ?% F: L9 m$ y4 I* _6 u; T
4 x+ V0 `% y+ J& o4 [# ]

0 t! o  m; J8 S' M7 Q- D: y! Q

代码附上:

  1. <!DOCTYPE html><html>+ a. l" ]! n/ C  r% D- `% K
  2.     <head># ]5 j- }. l5 d8 |5 n
  3.         <meta charset="UTF-8">
    % h( Q3 z7 u* {$ t) l' Z
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    . \8 G3 V6 L7 G4 [
  5.         <title>WebSocket</title>
    : v$ w$ l8 g; Y# f" ]
  6.     </head>, X8 G8 h9 u+ |4 R3 ?* g
  7.     <body>
    $ i$ g% T8 v+ l: {" w
  8.     </body>/ G' d  N8 f1 H  b: k
  9.     <script>
    % M: `+ J. \) W
  10.         var socket;8 t& F. h: a. R4 t8 P: I
  11.         if (window.WebSocket) {
    1 g3 C) U& q, {6 s! |/ R
  12.             socket = new WebSocket("ws://localhost:8080/myapp");! V. Q! M8 g' Q. f! B
  13.             socket.onmessage = function(event) {
      @1 w1 W% @) E
  14.                 alert("Received data from websocket: " + event.data);: ^8 J3 |9 D3 j$ T$ d* z, ~! a
  15.             }7 v& c( V6 I, r
  16.             socket.onopen = function(event) {# }' w* m, r* t2 w, z2 ~8 _
  17.                 alert("Web Socket opened!");5 k. r/ |. M3 ]3 `
  18.             };. Z8 ?, ^/ q- I. m
  19.             socket.onclose = function(event) {1 P! i6 U0 i7 ]/ j
  20.                 alert("Web Socket closed.");
    0 ?9 \: [1 m; @( f! h9 S. Z
  21.             };
    2 o' B. l" q$ J9 U* r* x- ?
  22.         } else {
    : \+ j; |" Y, E8 c4 O
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    ' r: w' |/ x7 ]/ R' H
  24.         }0 f# V; e/ T7 F, ?

  25. 6 X2 X) X: O; p( |: A* a6 F
  26.         function send(message) {
    9 W- p' ]% i0 _/ w; h# w4 o
  27.             if (!window.WebSocket) {4 j. v3 l6 _$ G" n/ C
  28.                 return;& V+ w# t/ |6 p" r1 T, Q
  29.             }
    2 X  y. Q' _% n! q; a) F+ b
  30.             if (socket.readyState == WebSocket.OPEN) {
    / u% O6 l8 m1 J8 @+ _
  31.                 socket.send(message);
    5 i8 P  o. h+ L  r1 y, l
  32.             } else {
    5 L* u7 Q: |$ d5 x. O9 p6 n' W
  33.                 alert("The socket is not open.");* J4 F0 z9 Z; T  D
  34.             }1 a/ V# `1 H( |' W
  35.         }. o! r% [: g- X' s4 q; G
  36.     </script>$ t6 I4 k# \" f" Y' R8 e: _' G
  37. </html>
复制代码

$ C, Q6 P6 ~7 |9 z) Y# w
8 t* l- O5 O5 [! n( }  x8 ?
: y' @, q1 |  N. `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 04:47 , Processed in 0.119312 second(s), 19 queries .

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