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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14346|回复: 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");  
复制代码
8 F) c+ N* V3 S9 `/ a  A4 f" x

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
) ]$ S+ t) L  [% C1 o, f0 ^* F4 k  {
" _! B) h9 h  M/ Z( L6 \( J! T! d* H
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开- P3 y2 {3 I+ _" _1 D6 R
  2.     }
    7 t. L$ ?# k" Y3 A
  3. " A! ^6 l! w  ~' U+ v& D) ?: i
  4.     socket.onmessage = function(){8 q" ^1 z: A- h4 q9 N
  5.         //在event.data消息数据4 a2 K9 m2 x( a* [$ D8 ?
  6.     }0 T! X4 v& `' O
  7. * u& k3 x' B# {. K8 f
  8.     socket.onclose = function(){
    8 f- m/ {" W! [- \/ R, g# d
  9.         //关闭WebSocket
    ; U5 d4 Z( l+ X+ B
  10.     }
    - @$ H6 q9 y! l/ ~7 T
  11. 7 u9 H4 x$ w& w( e- f! @! U8 f9 f
  12.     socket.onerror = function(){
    " H! C& U7 G; }* d7 O+ S
  13.         //错误触发2 k3 I0 G4 N" U- k8 G0 j  ]
  14.     }
复制代码

9 l+ F7 a9 M9 ]) \: A) V. w0 x2 j" [3 c) v

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

  1.     socket.send(message)
复制代码
# {) N. l' Q( a7 F, N
0 U8 o* V9 r9 Q  Q

+ @: D8 k2 [* A7 B" f  t( M4 {1 P

代码附上:

  1. <!DOCTYPE html><html>
    - ]4 j8 y; ~+ A% q/ Y5 \! Y, w
  2.     <head>% j. y+ X4 J: J" m! c% z
  3.         <meta charset="UTF-8">
    2 J. s- C+ P' T+ u) O" s3 q; d
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    - }+ I& m2 L: y9 U9 v! e5 O
  5.         <title>WebSocket</title>% Z' P, a* [5 a+ K; {* w& Z8 T
  6.     </head>
    / r7 n7 L' F3 q# V  R5 n0 d
  7.     <body>3 B$ X( `. S! b6 f6 y! h
  8.     </body>
    8 t/ l7 o2 y0 v+ A' Q
  9.     <script>: {$ }" ^% a( w% j+ P( g3 t
  10.         var socket;
    ( R4 N0 Q5 E% q  r1 K7 K
  11.         if (window.WebSocket) {
    ! N# L& Z8 d7 r* W6 }' v
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    # C9 u- q* |; V7 T" n0 r' L  H
  13.             socket.onmessage = function(event) {6 U- I; p2 [5 k2 u8 I, F- V
  14.                 alert("Received data from websocket: " + event.data);; E8 w! X6 f- D; o* V/ B6 Z
  15.             }
    8 G3 L5 [, U. h4 ~* F6 X
  16.             socket.onopen = function(event) {
    & I6 e- Z6 u% N- C& o
  17.                 alert("Web Socket opened!");
    $ @" r3 Z5 D3 X5 e3 `
  18.             };3 A( S; v- r5 R
  19.             socket.onclose = function(event) {7 ]& Q4 W' K7 Z1 A. a. A; e
  20.                 alert("Web Socket closed.");
    8 u& e+ {# y) a$ P( C- i
  21.             };
    7 k! J4 P* P) {! q. W! x2 K
  22.         } else {
    ( [" X5 I; |% g( Q1 r6 J* n
  23.             alert("Your browser does not support Websockets. (Use Chrome)");0 H/ A. I( C' }9 d2 b0 \
  24.         }
    ( z: l% l, B- E6 c) C' ~, o' C5 V
  25. ! w  {0 ~( l$ ?$ j- B
  26.         function send(message) {
    6 y0 n2 d" P* n) y
  27.             if (!window.WebSocket) {
    % x4 V+ w) O; g" j/ J
  28.                 return;7 Z4 \* F+ `  Y0 S. A$ z1 }3 W0 t
  29.             }4 ^4 R% H- M) y; m2 c
  30.             if (socket.readyState == WebSocket.OPEN) {
    , }9 q6 g; j" R% |
  31.                 socket.send(message);
    ! Q$ l0 B. u" b4 |5 z8 I) V- I( j
  32.             } else {
    & g6 c- e. Y! z2 ?8 B, Z
  33.                 alert("The socket is not open.");
    % v" ^! b1 f& a- f5 I
  34.             }
    $ w3 E+ a; y( |  M6 c% h4 Z0 ^( N
  35.         }6 d- i% s# ^! R' j
  36.     </script>( S8 G7 ], @, [  a  }# t' }
  37. </html>
复制代码

6 X- Y# \0 q5 u6 g. V8 j3 [) s# l* i8 L
* H; \7 x# Q. w1 d
0 ?9 X5 c- a4 N3 M! n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:29 , Processed in 0.046951 second(s), 20 queries .

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