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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

" r  `* A5 d0 M; i

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
5 a" K1 q4 t; m; i; L4 x9 S
, E: ^7 Y& f; N* P5 a1 r' I& @- m- [! `
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开  J8 d0 D7 f# y( e" ?9 B5 H
  2.     }  E5 L- a" I4 u5 d* \- p' ]3 [( K

  3. 3 R1 I: C) F  _7 m3 t! [! y8 y
  4.     socket.onmessage = function(){0 ^7 \+ ~- [0 R
  5.         //在event.data消息数据
    ! m1 h2 D) Z/ K6 k
  6.     }
    " m3 s" u* K5 ]1 w- K( J7 m
  7. 3 K5 S9 S% w2 v) m' X0 c" \
  8.     socket.onclose = function(){" [& G+ @" e- j
  9.         //关闭WebSocket
    ! n$ @( q  M5 z/ g- q: y* M! C
  10.     }/ C+ c% |/ S& C" P3 r3 T
  11. 3 ]. D4 Q3 S+ |5 X# ?5 n. X% l
  12.     socket.onerror = function(){
    % ^! M5 i1 O/ B8 t4 w; o
  13.         //错误触发. y' n9 B) S3 b6 z
  14.     }
复制代码
6 @0 `* h( m+ k4 w' `7 m, H4 m$ H
& K# z7 |. {" H# s

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

  1.     socket.send(message)
复制代码
% e) Z3 W$ Z, t! t, G& x$ A! }
3 `( g" J4 D. b- e' i

: h1 ^* q' \# c/ q& B

代码附上:

  1. <!DOCTYPE html><html>
    . t) y# q5 z) [# n
  2.     <head>9 h: N* J+ I' O" W. }+ o6 W+ j  h
  3.         <meta charset="UTF-8">4 m, R5 j# }/ A  f! [7 W
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">, O( I* Y- R, C: z
  5.         <title>WebSocket</title>
    ; U; I% A* l5 N' D' C, g" e* r
  6.     </head>
    - p& [% R, U& b2 z
  7.     <body>
    5 |/ _; g/ g& I$ v( R; X
  8.     </body>; D5 ]1 n$ g  _& H
  9.     <script>
    0 E; v" l4 S4 j# @1 G/ h  t- b6 q" L
  10.         var socket;
    * g! I! F5 }" C
  11.         if (window.WebSocket) {
    4 |1 U/ p7 v. z
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ) J! t2 l# V3 N" `3 Z% F
  13.             socket.onmessage = function(event) {
    0 J" j% m% H2 x+ z+ S
  14.                 alert("Received data from websocket: " + event.data);; [7 U3 f$ D' X. g
  15.             }
    ; Y+ g0 w% t' ]# W7 ^! F
  16.             socket.onopen = function(event) {- T* C. p, h$ `5 `7 ~* k4 q- p
  17.                 alert("Web Socket opened!");
    2 {7 y" y# P! ~  s
  18.             };
    0 k8 V9 [! @% m; _
  19.             socket.onclose = function(event) {6 i1 k2 ~7 M  o6 N6 j2 C# P
  20.                 alert("Web Socket closed.");
    ( L7 [$ C5 m$ q4 w& J* V- J& s
  21.             };
    4 ^/ X; {& |/ S" k( T8 b2 s
  22.         } else {
    1 \2 S9 E* j( R
  23.             alert("Your browser does not support Websockets. (Use Chrome)");$ s0 [4 }1 l7 ?0 M2 P9 c- G
  24.         }
    8 A/ W3 Y9 K/ i2 A/ U" _

  25. 3 ?" H$ \/ e5 ^' F- }
  26.         function send(message) {% a; i& _3 e/ Z6 O: S; M7 v) S: ]  y' W
  27.             if (!window.WebSocket) {
    ; V% a5 e) \& m( f3 U1 Z: @
  28.                 return;4 I' P' c5 ~  w9 @
  29.             }
    ; J1 x8 i! w7 M! j( U
  30.             if (socket.readyState == WebSocket.OPEN) {
    ! ~; i% h9 r/ `
  31.                 socket.send(message);- x0 U& |' ^& a; t, b: E. k! T
  32.             } else {
    ! Z# h2 ?. P, n; ^3 }/ i0 ]$ H
  33.                 alert("The socket is not open.");
    + ~1 h) e; \1 {$ c
  34.             }. e- N0 n3 q8 ^# M3 @! H
  35.         }. j' d' B7 i9 G
  36.     </script>
    4 D. N/ P* b, G# @0 o
  37. </html>
复制代码

% C6 o+ [% l+ p" b* e* T0 o
& r3 a# f8 n. ~
; y: ]% Z) d$ b& Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 10:06 , Processed in 0.055424 second(s), 19 queries .

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