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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15789|回复: 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");  
复制代码
$ Q3 T6 A2 W0 P4 h+ T

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
; v1 n; ?! F# }2 _3 [! q1 Q1 g9 Y8 z; C, T, t

) H# W1 ~. A9 l# e- E3 m该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    0 W" z4 @4 I" L5 Y8 {9 c5 a9 _
  2.     }; p3 d; ]' h9 S( I. P

  3. % p$ [8 v& N- K$ i' j1 V6 B
  4.     socket.onmessage = function(){' a" I% ~, m8 C- D) s7 ^: S4 v
  5.         //在event.data消息数据
    2 c7 \, u. {" j; b/ y
  6.     }
    ) Y; Z+ e4 V# f; V( ~% U, A' I
  7. 4 c& B: F7 Y9 B, v% E5 @& [
  8.     socket.onclose = function(){
    . j7 m% Y& u% U  R- J
  9.         //关闭WebSocket
    : A0 s: w4 s6 O* y1 m! h# I
  10.     }
    3 y: [7 h6 [. ]3 f2 z
  11. : c; c) n# W- G' H% a
  12.     socket.onerror = function(){
    ' D6 A4 S* D, g$ i2 F! j1 I
  13.         //错误触发- a& z; H1 S9 I# T
  14.     }
复制代码

' ^5 s  r- q# I' f
8 M* h* M: K( d) n, ]3 ~

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

  1.     socket.send(message)
复制代码
3 K6 Q* C3 H" N
0 A4 Z  x8 }2 T

; f9 v: \8 q* m& ]

代码附上:

  1. <!DOCTYPE html><html>$ M1 [1 W9 @8 {
  2.     <head>
    0 N6 Y- l& F/ [" @2 D5 ?/ _  v
  3.         <meta charset="UTF-8">& c1 A. r6 \) B( B, G8 o- Z
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">5 b7 n  N$ r2 s+ O
  5.         <title>WebSocket</title>1 |8 Z) y2 o2 a7 n. u
  6.     </head># U( z0 y% g6 |
  7.     <body>
    ; A5 B5 W$ [9 G' ^5 d
  8.     </body>3 z, U& A1 n5 p# w: r6 g1 m4 e0 Y
  9.     <script>
    ) X: X1 Q' S/ F4 }& F; L
  10.         var socket;: ]- I0 W* D' I
  11.         if (window.WebSocket) {+ v. [! j- Y8 h$ l
  12.             socket = new WebSocket("ws://localhost:8080/myapp");4 K, ^# z$ c8 I3 {9 \' P/ l
  13.             socket.onmessage = function(event) {4 }2 G8 u& S0 [
  14.                 alert("Received data from websocket: " + event.data);( ]$ M" U/ m8 G% u' `  C
  15.             }
      b1 u% U" x% h& p
  16.             socket.onopen = function(event) {
    - J; Y$ u9 k, S
  17.                 alert("Web Socket opened!");  l. C3 k, Z5 z1 L
  18.             };
    & S; c. x" {# W+ A
  19.             socket.onclose = function(event) {0 S; e- u4 d2 |3 |& f
  20.                 alert("Web Socket closed.");
    . Z* p# U3 d4 a( B
  21.             };- W" T. g1 g) c  h( e6 w
  22.         } else {) X1 a: E( w+ {; U
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    3 B' m  @# \/ B
  24.         }
    : [0 [0 s/ l0 L7 N" X
  25. 3 K* ~$ a4 `/ @4 [
  26.         function send(message) {
    7 O) W& p" G# t8 a8 d
  27.             if (!window.WebSocket) {
    ; m+ K- g7 x; w: U- G
  28.                 return;
    4 x/ s' I& A# ]
  29.             }: J6 f2 e7 F$ B0 g  H
  30.             if (socket.readyState == WebSocket.OPEN) {
    6 K- k) \& {! W# Q6 B
  31.                 socket.send(message);
    ! H5 X! ^; [* c
  32.             } else {
    4 f) N# t2 s; m2 t- w" x# b: W
  33.                 alert("The socket is not open.");8 O* X1 z4 S0 o2 z: r3 s$ m0 U
  34.             }! m1 z& z% l7 A) O
  35.         }1 V& Q: A4 T% M5 l6 J+ U
  36.     </script>/ c5 `2 F3 S. b. N; Y: y1 L
  37. </html>
复制代码
$ e2 W( t  ~/ W# y: W0 e9 _8 w

! ?6 j: E# D$ T5 c+ G9 T
: H3 C4 e$ ^& F! e- H& b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:12 , Processed in 0.054150 second(s), 19 queries .

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