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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14441|回复: 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");  
复制代码

* p  n, J7 g3 e" q3 }# t

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
! }% T3 v  m% Y
3 e. ?/ B( g# U. m3 h% f% S) e2 g- k0 L/ ?& y
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开# ~' w, `  W% [
  2.     }+ q  o, v& T  e; T4 v! g( ?
  3. * K1 F6 Q7 e: f. R
  4.     socket.onmessage = function(){9 P( J- q" p! E3 Y
  5.         //在event.data消息数据$ E" t0 h/ j: ]0 `# d# ~" M1 D
  6.     }
    % |, A* w5 ^1 Q. ?' h# v
  7. 5 c3 `5 u# C5 D: |, i; d
  8.     socket.onclose = function(){  D% w$ W6 T  ~* Q% ^. i7 S: s
  9.         //关闭WebSocket( S% c5 L' Y' _: ?
  10.     }* v4 p+ L$ K4 m# C7 ~2 D! P, L9 [
  11. 6 C, m* x+ ~+ M  X8 W8 l
  12.     socket.onerror = function(){, i- v! |6 z% \% n9 B  y
  13.         //错误触发# |( X0 c* F' x& |7 q
  14.     }
复制代码

( B4 n, n% ~: w  b) l
* l- ?/ X& D( P7 x

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

  1.     socket.send(message)
复制代码
0 _5 N3 J# g5 g* a( g7 |6 F
1 ]6 r6 d2 Y8 ]2 k5 ]
. _, g( @% v+ c3 G6 Z+ w) D

代码附上:

  1. <!DOCTYPE html><html>
      h) {7 G8 k0 U/ z. P
  2.     <head>
    1 f. L! J. N. y% r  y
  3.         <meta charset="UTF-8">7 D7 o* P$ A8 L
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">, @1 G  T+ q- s
  5.         <title>WebSocket</title>( U( k; E* O% T' p2 b5 o3 w$ Y
  6.     </head>$ H, e9 ^0 r+ r/ @& [/ h
  7.     <body>
    1 h/ U9 j4 `1 Z5 X- m2 D+ r2 e" H
  8.     </body>
    - Z: u0 @- s3 ?2 S
  9.     <script>
    0 }  g  I: T" Q+ ]6 p3 a# ~; C
  10.         var socket;6 B+ x# L6 O( V1 s( V- `0 C
  11.         if (window.WebSocket) {5 v) d7 g7 w) i% R, T4 S$ u) A' J1 @
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    6 Y/ @" f! ]+ N; [5 I7 x; `
  13.             socket.onmessage = function(event) {" }7 i! |$ \( T! [' V& {9 n1 [
  14.                 alert("Received data from websocket: " + event.data);
    , H' Z1 s& R2 O
  15.             }
    2 Z5 S3 _8 v1 O# |4 X
  16.             socket.onopen = function(event) {
    * n' q5 A& Z0 x% a/ r: {
  17.                 alert("Web Socket opened!");: D- j) r4 e- L' ]* W! ~+ S
  18.             };0 v1 P! L0 F1 q& z
  19.             socket.onclose = function(event) {
    ) F7 [1 U3 p) G( X& U1 {. }. \# i
  20.                 alert("Web Socket closed.");
    2 f+ }" ^5 I6 P* v
  21.             };
    ( C& y4 L$ q$ v0 O$ @: @5 U1 b4 [" I+ _
  22.         } else {$ g% e4 B' {; M
  23.             alert("Your browser does not support Websockets. (Use Chrome)");8 ?! `. C+ t6 j7 q
  24.         }, a* P, J6 [$ p$ I: T
  25. ( j4 _+ H4 R' Y( ^& J9 ^. [% V, b
  26.         function send(message) {
    & J7 v% s" H, Z$ |7 m( N' ?# n
  27.             if (!window.WebSocket) {
    1 x% A; k% L# ]' m
  28.                 return;9 S( P' z8 B( e
  29.             }1 O$ L; a4 q3 D9 F7 `
  30.             if (socket.readyState == WebSocket.OPEN) {
    0 a* K, i7 o  D
  31.                 socket.send(message);
    7 c, `5 v/ h! n* Q) ~, w
  32.             } else {
    ; Q% t$ ~+ ^9 R7 r9 F2 E2 F0 m
  33.                 alert("The socket is not open.");3 \' X' P/ }6 |1 _$ |
  34.             }: ~$ p1 Z5 u+ j& B5 R* i( l$ {
  35.         }
    3 [; I8 f' t% z& Q
  36.     </script>
    ; a8 Q. t/ f# T; k" d
  37. </html>
复制代码

4 A" O8 F) K2 I0 D3 z# }7 u6 O4 n' |% C1 f/ l

: p# [2 K; e0 z. Q! W8 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:42 , Processed in 0.054146 second(s), 19 queries .

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