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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

) y% F/ d# R& W) }$ o4 N

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
: W" u( ?$ u+ ~- o6 Z/ f0 a0 n1 k4 _# ?# ~

3 s4 G  V/ z4 q; D" P4 m# _9 v该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ( f1 v7 f. P8 j2 f5 ]6 @' @
  2.     }
    ' d& F: z4 |9 d' Z) h

  3. 1 \5 a' x7 t( n, M2 O( z8 m
  4.     socket.onmessage = function(){
    2 U% c- O9 y* u* c8 ]1 G. ~
  5.         //在event.data消息数据
    ) |+ y8 z  f# O6 R- C/ U' j6 \
  6.     }2 t) l! f5 Q% ?; d' {+ Q0 p

  7. 3 z$ R3 F# m; x$ E6 [0 A: w
  8.     socket.onclose = function(){
    ; D, o( V1 s5 L# t+ o" n
  9.         //关闭WebSocket' e" C  a9 B1 M4 p6 M+ m2 j' [
  10.     }
      }9 f. V& N0 T. ~

  11. ' ~' U8 Q% E3 r
  12.     socket.onerror = function(){/ \: H* H# k. x  e: Z; c7 d
  13.         //错误触发" b' T! B7 D$ a& I2 }* c4 l( ?
  14.     }
复制代码

1 \& r2 R, \, T1 Z  F& V; o4 C+ Q, W$ q, `2 g, u

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

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

4 C% w5 U+ @% p2 g  T: x# X0 E& q/ J4 U' N! C, G3 A
* F- [4 j3 y- {! G2 s$ {, R5 D4 v/ j

代码附上:

  1. <!DOCTYPE html><html>
    - ~) w  T9 M+ V) W3 q& P5 R6 w! Y
  2.     <head>9 p# n& l1 @% D1 C- y0 D0 D
  3.         <meta charset="UTF-8">! i7 ^7 Q* v8 q) q) k- \9 w* n9 z
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    " d3 G3 }. z. w' d& S( C3 C
  5.         <title>WebSocket</title>0 r7 k/ s( O; S$ ]( \  N3 U
  6.     </head>
    $ m1 ?! I# K5 Z
  7.     <body>
    1 \7 {, T7 w/ `
  8.     </body>
    2 e+ P) z5 N) J" ?9 L1 b
  9.     <script>! `7 P1 P! o, _7 Z- v
  10.         var socket;( J, }9 z% ?! Y( ^7 [+ l$ q
  11.         if (window.WebSocket) {
    % f: V; c  [  g0 P
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    % x  }- p+ ^& x1 }% S$ w
  13.             socket.onmessage = function(event) {# S/ W$ e8 J8 }, r; T
  14.                 alert("Received data from websocket: " + event.data);) [/ M& B/ x  L0 J; w4 f4 k
  15.             }  [. k4 {# D5 N# W1 h8 M8 E
  16.             socket.onopen = function(event) {
    , N: E2 e( I0 Q" q3 i% a
  17.                 alert("Web Socket opened!");5 b' V) T' z. B; q, r
  18.             };+ Y! D, p) a. P1 X4 B
  19.             socket.onclose = function(event) {
    . Q  P8 f' P4 B' g
  20.                 alert("Web Socket closed.");
    : V7 G* T  a! g' ]2 N% b
  21.             };
    " _, o4 P9 r* V! D1 ~
  22.         } else {+ S5 _$ r/ r; Q
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    . W% |, ]3 l$ l3 i
  24.         }
    8 Y9 t8 c1 s, d8 g1 R
  25. + U$ [  s4 v( T9 n! h7 y
  26.         function send(message) {
    & X! e% a  P- w2 n7 ^/ E
  27.             if (!window.WebSocket) {
    ' b  e2 \, y9 Y8 B4 A
  28.                 return;
    ) f/ N: E# o) p  l! r
  29.             }7 w6 W+ V6 {+ B/ \
  30.             if (socket.readyState == WebSocket.OPEN) {, O1 M8 S! Z, m4 c
  31.                 socket.send(message);$ N# A- H" c5 f- ?2 G. N& X
  32.             } else {* x# O0 _; y* D7 c$ S4 M: K
  33.                 alert("The socket is not open.");
    ! q7 |" K$ w" W7 m& ^+ E# Z
  34.             }6 _! j# s4 o; i% _# I  H0 j  u
  35.         }
    # q4 j8 ?/ {' N& E, l! X2 z
  36.     </script>! }! j, p0 c/ m! A$ U/ W+ t
  37. </html>
复制代码

' ^- w& X1 c! j% D; ~8 @6 r( p2 v4 O+ o

( t# K* N9 Y2 {9 W9 B2 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 16:02 , Processed in 0.053394 second(s), 20 queries .

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