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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10007|回复: 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");  
复制代码
+ x* h  J2 L9 {8 M* N

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
6 ~* H3 P, R8 _3 f- [* P0 R$ K& k
* J3 u; c' t  T" H# q
% N( w/ A0 B$ A该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    0 ~" D7 E7 S$ j1 Q, t
  2.     }
    7 n' \% O4 h. H: U2 Q$ r
  3. , a; y8 B. z, A5 j, F$ b+ s; f$ s
  4.     socket.onmessage = function(){
    7 T4 O; Q7 _% {6 w& h
  5.         //在event.data消息数据
    : H5 I. X4 l" h1 K; A- p' Y
  6.     }
    " s/ t5 \3 G8 I/ i5 @

  7. # X: ?) }+ }3 O  r5 G
  8.     socket.onclose = function(){  n. j/ I& `( o/ r4 C
  9.         //关闭WebSocket
    ; f1 B- [8 K$ k% \. e4 N1 B6 }
  10.     }/ |" ?# n5 y0 r( i4 L% ^6 v1 k

  11. # {* C' W. ?8 }8 J7 Q
  12.     socket.onerror = function(){5 q5 S( j% L$ |' o4 r0 x7 {
  13.         //错误触发
    5 {! R2 Z9 ?0 c4 a( d8 V
  14.     }
复制代码
- A! S/ M# f; b0 H, w
$ y4 i; [/ P% B; _8 d! n

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

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

/ H8 A  @7 f+ W+ P8 N
! D1 G; {& |8 ?3 Y/ Q
" C! d9 d- m2 E

代码附上:

  1. <!DOCTYPE html><html>
    1 R: Z- g1 E/ C1 Y9 R
  2.     <head>
    , e  v2 u- }: D3 y) e" Z/ D" b
  3.         <meta charset="UTF-8">
    0 u( L  c, k+ a/ B6 A7 z
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    ! O4 a3 Z, P& D9 R
  5.         <title>WebSocket</title>% g& ?6 W3 B" O) A) ~
  6.     </head>
    4 b' ^2 T  A, q
  7.     <body>. U& I  d$ C7 H8 n% C
  8.     </body>
    4 [! `* U; \$ h) ~; R
  9.     <script>. m) s& u5 J- g3 b
  10.         var socket;
    # I& @, m3 f6 x, t* ]1 i6 W, P0 t/ |
  11.         if (window.WebSocket) {
    . A$ b6 U# k! Z2 C6 T
  12.             socket = new WebSocket("ws://localhost:8080/myapp");7 D$ ?% e# p- w5 q: y
  13.             socket.onmessage = function(event) {
    : ]1 x- u+ ~6 S* k4 H* j0 U
  14.                 alert("Received data from websocket: " + event.data);
    / l8 a7 {/ |! H/ X
  15.             }6 |0 a- b" E& M1 E5 t
  16.             socket.onopen = function(event) {+ }8 ]- f$ a/ S' Z
  17.                 alert("Web Socket opened!");6 k1 \8 r0 \1 I: n+ [
  18.             };
    ) M# `& r- O+ C& |7 N: s' }1 j6 ~
  19.             socket.onclose = function(event) {, N! _- f* ~6 {' T7 l
  20.                 alert("Web Socket closed.");
    8 p" P) a; f* r! V! F
  21.             };
    ( O4 p- i! X8 D/ E/ H# V& k0 M
  22.         } else {# q" D2 Q- f# n: q$ e
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    " D* p& h& N8 _3 x0 N; M4 G8 O: n; |
  24.         }
    ! Y% D( h' m! o" H4 G

  25. - i; Q" z9 D, `3 D$ a% g
  26.         function send(message) {
    # C2 g' K! I! A9 x) h4 S5 A% ~/ z
  27.             if (!window.WebSocket) {
    ; r6 |$ q2 w4 y( Y' F2 J/ \) x. y) _
  28.                 return;3 D# p8 L# w( @) y" _, x
  29.             }
    2 _/ x# v3 j! b8 S7 o' q
  30.             if (socket.readyState == WebSocket.OPEN) {
    % ]) U3 E. x) C9 t0 }: L" \% H
  31.                 socket.send(message);
    5 b, W; ]. W) P# j
  32.             } else {" c/ I4 D6 a: p: i6 S, I
  33.                 alert("The socket is not open.");# C; i' F! S- L6 k: q! [1 J
  34.             }
    4 L4 @" R; ~5 l7 d* Z. `* P6 r
  35.         }1 L! f  ]- i3 N. ~& W
  36.     </script>) a5 L6 X" w, `* |5 @
  37. </html>
复制代码

- U  H; {% ^: u9 ?: h- ~& b1 y2 B9 w" K; p8 m
& P# N# f  F. W/ X8 Q% R2 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 13:15 , Processed in 0.128321 second(s), 20 queries .

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