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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10060|回复: 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$ {! c! i' b; _

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
2 }6 M' _. g3 W  p3 n: [* K9 E
. Y$ j/ Z% A1 g
1 U5 f: X$ b6 W. j& S+ k4 I( S/ @/ W该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    8 M9 [! S) V0 d9 `4 S
  2.     }* ~- c% m( f, N% r) x5 M$ @
  3. 2 R0 h. p' B% }: Y. U- ^/ b* O
  4.     socket.onmessage = function(){9 O3 B6 ~9 z" ~& B
  5.         //在event.data消息数据
    3 @+ C0 }# u! ^& a: b. P
  6.     }
    " H6 U- L9 e4 ?

  7. 8 \* e+ Q  I5 d: a# A
  8.     socket.onclose = function(){3 B+ z% p. U" G
  9.         //关闭WebSocket
    # }& d3 t3 M6 C
  10.     }
    ( `5 S* Y8 E% }0 t; j

  11. 5 q1 e6 Y, B9 K& j! Z
  12.     socket.onerror = function(){( a1 ~! O6 `9 n7 p* T8 D! E+ M
  13.         //错误触发
    & y# |' |7 |) Y* Z
  14.     }
复制代码

  O3 D, c- r) X( M6 R9 |% P
% R3 j: R4 L2 d% D! o3 Q, g4 D0 t3 A

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

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

; b( g6 Q% O- a) }2 U. u8 P- b2 V  X' J8 p7 P- v" [

) t  x9 e# ~# m  P/ a5 G

代码附上:

  1. <!DOCTYPE html><html>% B% w8 y8 m- f( z* [
  2.     <head>& l% E7 S5 a" s8 _2 r) y* n
  3.         <meta charset="UTF-8">7 U) u2 M' R, e9 P3 q; ?; ~
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">% n& x4 _+ O% e: K$ M; X" F
  5.         <title>WebSocket</title>& r7 J* `1 X# K( d; z
  6.     </head>. g; Z3 L  j1 \8 n7 }3 G# c7 l0 Q
  7.     <body>
    * f' a$ ^+ x+ H' R
  8.     </body>
      [9 G5 f, Z/ M, t6 Y( h) q. y
  9.     <script>, K( Q: B. J6 T( z+ M% `
  10.         var socket;
    2 x" K' I5 G+ R' S% Z
  11.         if (window.WebSocket) {2 y0 C: u& F8 f# H( l& q) X
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
      Z  R* [& m1 a- U# U
  13.             socket.onmessage = function(event) {
    / G' ]2 C; s+ Z) l3 X
  14.                 alert("Received data from websocket: " + event.data);0 e0 q+ b9 U( v. ]& r) M% S3 _
  15.             }
    0 U2 _& t0 j* l% X! P
  16.             socket.onopen = function(event) {
    5 v( a& r3 y. O, ~6 x
  17.                 alert("Web Socket opened!");
    - ?' v: t& j& P; I, k+ w% M
  18.             };
    1 h' z2 u' S& ?9 M1 h( m0 l; v
  19.             socket.onclose = function(event) {! L+ Z) u0 P; }  |% ~
  20.                 alert("Web Socket closed.");
    + z# C7 U$ x+ i0 `. ?) I( \
  21.             };
    1 W" f( }+ l1 k. Q; p* y
  22.         } else {
    1 P9 z5 Z9 B  a! R, Z
  23.             alert("Your browser does not support Websockets. (Use Chrome)");) [$ n: H* G# a& L5 f7 D8 E0 @# n
  24.         }" V  \9 f' }' l
  25. # j0 o' ~* E$ O7 z3 u! I
  26.         function send(message) {( o: O& a6 o+ C9 }( O
  27.             if (!window.WebSocket) {
    + Q) k! e0 `- p8 m  b5 d, `
  28.                 return;
    ) I/ b& w# Z* v$ \: X# |# K/ [
  29.             }
    / z7 g) x* n8 j3 i; P
  30.             if (socket.readyState == WebSocket.OPEN) {$ Z2 ]) _( T; ~8 J. A
  31.                 socket.send(message);$ w$ I5 E8 Y% s# i9 G1 ?! Y5 c
  32.             } else {# j9 {4 m9 J, g; Q
  33.                 alert("The socket is not open.");5 b! r2 [$ o* L6 ?
  34.             }
    : K) t# F# e5 v8 P# O
  35.         }) L/ N1 p) @+ k2 `* E- @2 g  a
  36.     </script>
    ) G- l" l1 o. K
  37. </html>
复制代码

4 d7 `5 Q$ F6 B+ s- ^( G6 q- h( N  m0 c# i! E* h( S8 q

- b- O! K6 O0 ~$ X" z, E3 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-20 08:24 , Processed in 0.128093 second(s), 19 queries .

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