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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

" {  ^7 ~: O5 u3 ]8 S) x! d4 W' h

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 # W3 U- ~* J8 N; ^- R- e* W8 E6 K& G

% L! n* l5 R4 S. P
8 j8 |  G( S# ~: L% }0 D# f该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开' j# n, O& R+ H1 t% K$ c
  2.     }
    ! I( I' D. H- \) [! t8 D
  3. 7 |" n- t( W3 n$ c6 P3 y
  4.     socket.onmessage = function(){
    ) R' g7 ?3 z. s* n/ ~  z: Y) T- @7 T9 ?
  5.         //在event.data消息数据
    6 v8 a5 h( `8 y$ M# b
  6.     }
    6 `: b0 P& A6 N* c. Y0 b+ W
  7. . W1 k  z; U' A0 U% z
  8.     socket.onclose = function(){
    5 Q. B8 Q/ B: U
  9.         //关闭WebSocket- o% a7 V. k9 m+ u! r2 Y
  10.     }
    ! j4 m+ R" c* {; L6 u9 x

  11. ' e; [3 h4 e- A$ B) p3 e
  12.     socket.onerror = function(){/ D* Z6 k3 W6 @7 a, z5 {
  13.         //错误触发
    ( ~9 R/ L- U2 ~# y4 Z2 _
  14.     }
复制代码

, K2 s7 C) \! f6 S: v4 R. p
# ^8 w9 S& d+ i3 L5 P" o

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

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

7 q, u! d# @+ F$ G+ v# g, V( A) G/ @3 {6 c' A) v
1 C+ W( }4 x- j7 S2 g

代码附上:

  1. <!DOCTYPE html><html>2 k1 r& Q5 }* ^' m  w: ~* d
  2.     <head>
    7 ~8 |% f3 m3 X1 @% F& U- ~9 H. {
  3.         <meta charset="UTF-8">/ Z- d: |9 G/ z/ ?& m- R* Q
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">: {4 n1 G5 @5 `
  5.         <title>WebSocket</title>5 I0 W2 E* F8 p# v
  6.     </head>. j3 r# Z# a/ Y6 E% a! ]
  7.     <body>4 J7 A) z4 w' p/ z7 B
  8.     </body>
    1 Z7 ]+ T8 }# Z$ k# ?% N
  9.     <script>
    0 g1 X( f: z* r9 E  e* D- U
  10.         var socket;+ s3 Y$ L) w. D2 z; }
  11.         if (window.WebSocket) {) F4 o6 s; w/ y. Z1 L3 J3 Q
  12.             socket = new WebSocket("ws://localhost:8080/myapp");1 w7 W0 S" p! e& O
  13.             socket.onmessage = function(event) {# L  h7 U7 V) }
  14.                 alert("Received data from websocket: " + event.data);! J" O& u0 ~+ N* K- r& J* k
  15.             }
    7 P' }8 ?+ W# {( r
  16.             socket.onopen = function(event) {
    * I& \9 g4 D7 S% P) t% K
  17.                 alert("Web Socket opened!");; h8 r( P% J6 W
  18.             };
      B( O7 h& R0 m2 G
  19.             socket.onclose = function(event) {6 \  w+ r1 [* z- t
  20.                 alert("Web Socket closed.");# p7 X8 H/ v  F: T9 Q5 ^) A
  21.             };
    0 _* t( x2 E8 T4 x5 u6 Q. _
  22.         } else {. X& R/ r, E: t
  23.             alert("Your browser does not support Websockets. (Use Chrome)");& h# G$ |( U) d
  24.         }
    ; k' X) n+ E! G  Q0 T3 B! ?; Q' k# o4 r

  25. / F( Y( U* x- ]/ x
  26.         function send(message) {
    . {8 e) U1 X9 o, E
  27.             if (!window.WebSocket) {& u- f% z7 e; ~( W* g, D+ T
  28.                 return;
    " `. i( A7 U7 b4 N, S  i
  29.             }, c  ?$ \; c# C* {0 e* @2 h
  30.             if (socket.readyState == WebSocket.OPEN) {; T2 h% |4 h" u3 D. `8 A
  31.                 socket.send(message);! i6 X/ t& z1 g, m  W  L
  32.             } else {
    6 e0 V' i' D  q. W) P
  33.                 alert("The socket is not open.");
    + v! J" F8 B" Y6 F
  34.             }
    & Q/ I6 Y% \+ a
  35.         }  {# o; A: d" _/ L2 S% S2 C
  36.     </script>
    - R: W) R* n9 d6 F* }) E+ b+ p5 d
  37. </html>
复制代码

/ R9 m5 P# m* A2 p3 a8 D3 f9 L8 \; w
% ^0 t# [& y5 o# F/ i) T0 K4 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 00:00 , Processed in 0.148013 second(s), 27 queries .

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