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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

/ K  ]" p6 i6 `2 ~

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
% Z& H% ^( w  s' B, F! r( u2 D. m. D
, g5 k* e8 \" u
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    * Z1 L0 {  Z% o5 ~! I! n
  2.     }& h  ~: T9 h: j1 M  d# o  e% V: K" i8 K

  3. ; j! F- F# h! E; e6 [4 V
  4.     socket.onmessage = function(){
    7 B+ d7 b' i& B/ a9 j
  5.         //在event.data消息数据
    3 d. N8 B$ \6 B' h- O2 i
  6.     }
    ) c8 B! O- Q3 O6 u% j8 F
  7. 1 S) t; Y  b7 b
  8.     socket.onclose = function(){! Q6 i( \; h0 `& H- l0 a! L  H
  9.         //关闭WebSocket5 A9 Y- B  n/ m+ T3 x# L! b9 J7 C
  10.     }
    5 W5 |$ j* l2 ~8 G

  11. ; B( p& r6 k: ^5 z3 B3 J4 }
  12.     socket.onerror = function(){# J& R  _- ]! ]' g6 `. z" e
  13.         //错误触发7 m4 w7 D3 \1 e" `3 i
  14.     }
复制代码

. T6 c! U  Q' [. E- h6 R/ s1 Y) e& v" G, R

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

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

$ \8 ?% u" a) Z& g$ g# o$ h) y
* T, l2 [# T. b/ r, s
  S" q. _& q% g& D

代码附上:

  1. <!DOCTYPE html><html>
    % Q( T' g( \6 D2 M! B
  2.     <head>, O& q* }8 c( F4 }
  3.         <meta charset="UTF-8">
    & H; r& K3 @8 u$ p% P9 w
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">; h+ h; U  _( u6 ~7 k/ F+ }, K
  5.         <title>WebSocket</title>
    : _, J" T% x( W1 n; |
  6.     </head>! O5 E" ^" S+ v
  7.     <body>
    % t, F/ C; n. J1 f+ k
  8.     </body>
    ' [9 |8 g8 o7 G1 u9 q
  9.     <script>
      K/ e6 I1 U, ~
  10.         var socket;4 U, O+ R5 E6 m4 }3 a- Q9 s
  11.         if (window.WebSocket) {5 f* @) X6 J& ?
  12.             socket = new WebSocket("ws://localhost:8080/myapp");& G; k% ~5 j/ {; R) b0 c
  13.             socket.onmessage = function(event) {
    ; O/ V1 \+ f6 @0 g! A$ a. }
  14.                 alert("Received data from websocket: " + event.data);$ F! [, {% v) H0 F* U; w- [
  15.             }
    ) m5 w& T) F# L6 E4 Y
  16.             socket.onopen = function(event) {# t2 q; d7 J" @7 J# z
  17.                 alert("Web Socket opened!");# `  ?) I- u* W) V& g3 ~. k; m
  18.             };* w# [0 }) ]+ d8 I: \. v: j
  19.             socket.onclose = function(event) {) W- W- P; F& o+ }
  20.                 alert("Web Socket closed.");, x! m# y: D' ?% I/ E
  21.             };
    1 N& A2 i/ P+ m; `
  22.         } else {
    6 D5 w' i' p' Y5 z& q. x
  23.             alert("Your browser does not support Websockets. (Use Chrome)");0 h0 E4 k* X1 L! b1 E* m$ \+ ^
  24.         }
    2 n! @* [; I$ p
  25. 6 ?0 n# b* a' [$ `/ C- @2 s0 _: s7 ]
  26.         function send(message) {
    0 K5 Q- O% p  c7 X
  27.             if (!window.WebSocket) {
    2 ]  r2 M4 s/ Y, w9 s
  28.                 return;
    8 r" a' D# {+ X7 D4 U& ?
  29.             }6 C2 s3 ?# q. f- ?9 _% ~6 E! r
  30.             if (socket.readyState == WebSocket.OPEN) {! I% I6 E- e0 k4 e) P# q6 z
  31.                 socket.send(message);
    / S! c1 B+ X; ]
  32.             } else {& a0 y: G* ?5 ?" M1 U9 T
  33.                 alert("The socket is not open.");
    2 d! H: ^; d$ p) x! j4 ^
  34.             }
    0 D3 \9 G. W4 ~: g1 C6 V1 {1 v5 k, h( l
  35.         }
    % O  m/ @" v7 z( d8 G
  36.     </script>, W5 Z0 K6 U- P) s9 |
  37. </html>
复制代码
* X5 z* L8 i; p, G/ Q
- l7 L# B4 B. Q( J$ _9 R+ e

- o+ n9 @9 g6 {& z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:59 , Processed in 0.073554 second(s), 19 queries .

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