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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

3 x# T9 c# T5 E5 ~; k

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 - i" Z0 J0 B/ n5 Y) d  d, M

" D! A- z) m3 ~1 `- x6 {/ z7 t/ O) c, f# I( E3 |! {/ O( H( P
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开) n  v' e% [! t! K
  2.     }- ?0 E  u" ^* F9 N. n4 s
  3. , ]9 w5 R  x- l, v; e
  4.     socket.onmessage = function(){
    ( x+ ^- g( M% \" ]6 a9 T2 f( w) g
  5.         //在event.data消息数据" c, i  ]/ J/ g! T8 v0 v$ X* E
  6.     }; t8 p0 H5 V2 C5 m  U

  7. / G3 ?0 Q# z) |' T% ]( N8 V
  8.     socket.onclose = function(){1 s2 M1 P( G; |' f& Z
  9.         //关闭WebSocket3 |( D* D# K/ R' X( w" ^
  10.     }* X' @. X1 r) v  M- [6 C
  11. 1 s9 E" }1 \8 z: T. J4 p
  12.     socket.onerror = function(){
    : T4 W: `! U' Z, }4 U7 F% f; @+ ^8 z
  13.         //错误触发
    8 o( R. W: q5 i& P+ r) |& {8 s
  14.     }
复制代码

. V+ B9 B' N5 X9 k" B& D2 B3 Z5 _- |4 J
6 r# A" J; b3 v2 f

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

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

' U" [2 p. L5 _/ w8 _# z: ]  X5 A' z8 [
2 ]9 }5 O! y2 \/ i

代码附上:

  1. <!DOCTYPE html><html>
    3 h- X7 Q! M0 e  F4 a6 V
  2.     <head>  p- T. w, H. z# _& n
  3.         <meta charset="UTF-8">
    1 `5 M8 e1 g0 u2 z' |
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">7 X; ^. B8 u! E: K1 I
  5.         <title>WebSocket</title>
    6 a  Z" l" U9 W5 [
  6.     </head>
    : K  E; R- w0 E. [# l/ y* H0 a
  7.     <body>
    % G: U' g3 D- w
  8.     </body>
    ( @% L" _: S$ g/ H; s0 H
  9.     <script>* X8 B: L5 k9 ^! w/ K2 x" x8 D
  10.         var socket;1 M: f+ ~. K1 ^; r$ E
  11.         if (window.WebSocket) {3 a/ K1 k* E. {0 u5 L% _
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    . K1 i8 j4 x2 I! h% ]
  13.             socket.onmessage = function(event) {
    : C" V7 A# Z5 @7 X8 S
  14.                 alert("Received data from websocket: " + event.data);3 R  z6 F. @- j' k6 q
  15.             }; @+ y" T* D( @& m: l
  16.             socket.onopen = function(event) {
    4 u/ d& Y3 J) x/ V
  17.                 alert("Web Socket opened!");1 E% t+ b. }# [* H6 b
  18.             };
    2 g9 T1 E4 {" ?; W$ u& H- O; P
  19.             socket.onclose = function(event) {
    * A1 P3 v& j! B
  20.                 alert("Web Socket closed.");
    % _* O# ?# h1 N! q$ t, ~8 }
  21.             };9 M4 ^2 U0 H& v8 l+ m
  22.         } else {
    . G. Z% i! F/ a
  23.             alert("Your browser does not support Websockets. (Use Chrome)");! I! o- p0 h. W3 m; M
  24.         }7 c$ E; ^8 ^7 I

  25. / C8 {" h; ], q+ z8 S
  26.         function send(message) {
    1 ^# E, q6 }* p$ t1 I; O8 o
  27.             if (!window.WebSocket) {
    7 \' A2 f# i9 b/ d4 ^/ O" R  a
  28.                 return;
    ( S1 o" R3 m! L: l0 J
  29.             }
    - B' e* w4 K/ Q5 ~7 ?( g& P
  30.             if (socket.readyState == WebSocket.OPEN) {$ K, z( w8 q6 C- c1 H
  31.                 socket.send(message);
    2 f* d3 g' E, Z$ G
  32.             } else {  u2 P% \3 ]6 S0 Y2 |" j3 U! ^
  33.                 alert("The socket is not open.");) n: R; h8 U1 ^" f3 A& M+ v
  34.             }/ B# \8 M) j7 r" s, i  ?, ^: M
  35.         }* A* |* m# q5 }/ W5 j/ A, h
  36.     </script>
    ( ~  o+ j5 j' G3 C
  37. </html>
复制代码

7 _$ l1 }$ ~8 F3 o
( D0 F7 h. o9 w; \4 F8 r9 M- `, @1 M- t/ J- e( ^7 K8 }' h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:39 , Processed in 0.056697 second(s), 19 queries .

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