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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14455|回复: 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 w& a2 l6 e# j

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 $ U1 g  P' f5 [- R1 A4 A0 A

" N5 P; c7 u3 D4 g( Z" [
# \- X( }& T7 V2 m: o4 ]该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    # s+ D$ w0 Z$ @* E* ]
  2.     }
    3 x' b/ m5 t: R/ X# ]* _
  3. 6 H  a3 o6 I# p  ~- g, e0 g8 z
  4.     socket.onmessage = function(){
    * Q8 `6 ^8 m1 m1 a+ _
  5.         //在event.data消息数据: |  @+ l) B" Z% M
  6.     }
    / [; W2 {: K1 H4 d

  7. * B' m/ K3 y* F! B# h0 f
  8.     socket.onclose = function(){
    7 O# Q2 o2 m3 l( J# ]
  9.         //关闭WebSocket  ~0 {0 ]  y% _6 L3 L
  10.     }
    5 t' \% D% P3 u; k/ j
  11. ) q. E3 n: W' S( q" F; z" R
  12.     socket.onerror = function(){* W  F7 Z( p9 o; Y3 L
  13.         //错误触发
    8 u7 x" i: d* o( L$ [9 r! s" ?+ E
  14.     }
复制代码

, r4 O7 {; Y  H# w* g& [2 h8 i) N7 v

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

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

) ?' {  `8 g% i2 m# {0 J4 N( x# ~& K, K& j! k

# k- c+ |; P5 `8 X

代码附上:

  1. <!DOCTYPE html><html>. Q  Z8 Z! v* `% r# a+ ?/ d2 o
  2.     <head>
    , i3 Y/ V3 w3 `
  3.         <meta charset="UTF-8">
    4 n" v0 O5 E, m  {
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    . K0 s! [# D6 [% a8 O6 P
  5.         <title>WebSocket</title>! p" d" b3 n/ {) S  A4 t: R
  6.     </head>! M0 y/ T) {$ j
  7.     <body>
      Q" ?& r& L4 I( X1 e
  8.     </body>% c/ n! e# U( h4 S
  9.     <script>
    8 {: a4 V5 j' @6 |4 X& t
  10.         var socket;2 x3 d3 x; n2 o5 L$ @  I8 N
  11.         if (window.WebSocket) {+ u' l. Q8 }% A4 w* c# {
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ) ~: @3 G/ A8 M$ D
  13.             socket.onmessage = function(event) {5 W$ z% [3 S, k8 x4 f5 x
  14.                 alert("Received data from websocket: " + event.data);& d  V1 f2 _5 v5 V
  15.             }4 g3 q3 d. {6 S) f
  16.             socket.onopen = function(event) {
    " v% A3 A7 Q9 V( c9 S% H
  17.                 alert("Web Socket opened!");
    , W) U5 S# T. T, B  ]3 S* L- Y
  18.             };$ F  ^3 d+ ~* v( Q
  19.             socket.onclose = function(event) {+ p! W" U, A& Z" a; C
  20.                 alert("Web Socket closed.");
    / j4 @4 h2 W# p+ e2 L
  21.             };
    3 O2 d/ S7 Q& ]; S# ^3 d9 E, A
  22.         } else {% z7 \5 Y8 {( B  `1 T, V
  23.             alert("Your browser does not support Websockets. (Use Chrome)");- A$ B% f- A9 X6 j
  24.         }  D' I% P2 ]3 D! P& S5 _) G; D

  25. & s5 u* R3 B( ^3 D7 o  a
  26.         function send(message) {# P* D4 a! e4 F; ^- S5 n5 D
  27.             if (!window.WebSocket) {9 R' S/ ^* z7 ~/ \% c( s" s
  28.                 return;
    7 Y, }% z- P6 q6 I! Q
  29.             }
    5 e" a; p1 N2 g) ~1 J# G
  30.             if (socket.readyState == WebSocket.OPEN) {& {* }; }* W  {( p4 ]: l; @( `
  31.                 socket.send(message);$ _' S0 c( m4 a2 `" P/ q
  32.             } else {! s. G) Y: ~8 S! k
  33.                 alert("The socket is not open.");) \+ K& K3 Y0 S6 T# N% o: h
  34.             }( G1 U/ V" K% Q1 h
  35.         }. P. v$ \! G/ J
  36.     </script>' i, i' A* s, X0 Q
  37. </html>
复制代码

6 }* l+ t! `' Y
1 }# @0 t, H/ [8 G8 v3 y  [
7 F9 y: g+ i% V9 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 22:06 , Processed in 0.052518 second(s), 20 queries .

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