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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11588|回复: 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# N5 y. K9 _: V" ~  K" Q  f

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 7 M! y+ ]1 ^5 n/ N# C
" h9 L( V6 C4 |: y- x8 ]

4 Y$ s8 @1 f4 i* N4 H) v3 E6 J该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开, z$ K4 I2 B* e  E
  2.     }& q- }: |1 G: _. A" S3 O7 {& ~- E
  3. 9 h' j3 M+ D6 l- O  t+ `6 O5 ]
  4.     socket.onmessage = function(){
      z# d! \, M5 {
  5.         //在event.data消息数据" k4 y  c! Q: a  i1 W  i
  6.     }* B3 Y* p1 {) l4 g

  7. % U; ]7 M7 _" T: |( |/ `4 v& q, X6 i
  8.     socket.onclose = function(){
    * k7 E" F7 g0 d0 n7 k3 ]9 P( ~
  9.         //关闭WebSocket; L# Z+ c$ ^- c3 A
  10.     }& w$ G8 X7 ^, [- I

  11. 4 P' P) I% H6 {
  12.     socket.onerror = function(){& T0 l6 C- Q6 }; [7 v2 @
  13.         //错误触发
    . s4 M5 w$ F6 S8 V& N& d) h
  14.     }
复制代码
# k6 X. e' M% [6 M  U+ z; y  a

2 A( [$ o7 d4 G& d$ Y, f

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

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

; G, t  t& a+ `1 \( e& j' K" L1 T% @( V4 P
4 r5 D7 L! T* ]$ l; Q

代码附上:

  1. <!DOCTYPE html><html>
    ; ?$ }; p! J" ^0 ^4 q
  2.     <head>+ q; m- n& R+ D4 `1 r% ?% ~# `
  3.         <meta charset="UTF-8">' V+ G+ J4 {$ H! D
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    / z& o, @* s/ Z
  5.         <title>WebSocket</title>  z7 }7 `2 A2 F# ~
  6.     </head>
    5 Z4 S( I7 @* v, g/ F' I4 }* a6 n
  7.     <body>; @! B5 p3 ]8 ?! G
  8.     </body>
    8 |# S2 ~* Q8 g3 r% m# B7 z+ i
  9.     <script>1 A% ^4 A- \2 w- [
  10.         var socket;
    8 Q: f9 E$ P% ?. F$ `3 S1 t) g- |
  11.         if (window.WebSocket) {0 e& _, n4 J5 N) Z3 I
  12.             socket = new WebSocket("ws://localhost:8080/myapp");% P) Q' r; _+ g5 T- c
  13.             socket.onmessage = function(event) {
    : n8 F3 S# f4 w0 K; P. R
  14.                 alert("Received data from websocket: " + event.data);4 K# i$ h3 B4 H) Z
  15.             }: `2 `( M7 b. q9 p% k( E" Z% J
  16.             socket.onopen = function(event) {. A; S2 O5 Q: w4 U4 Y+ {' A
  17.                 alert("Web Socket opened!");
      a( X$ L2 Y( w, s4 l
  18.             };
    , n4 L* Z3 L: b2 W
  19.             socket.onclose = function(event) {0 t2 M+ G3 N6 v& g
  20.                 alert("Web Socket closed.");
    0 h# b" w6 w9 \4 h3 x: m
  21.             };
    : M0 p% A& p" c; Y% k5 _* T  S
  22.         } else {, A( l5 z: |" ^9 L0 y, \9 s6 u" H
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    . i( b1 C8 V5 F3 P
  24.         }4 y' V- `' h) D1 l4 z! t6 K! e
  25. 2 d0 v6 e) w* F! {3 u( M3 _! m
  26.         function send(message) {' d0 `) [) _4 n. W
  27.             if (!window.WebSocket) {0 J" {3 }" H0 k0 ]) f
  28.                 return;
    3 s+ o7 q! S/ {% Q1 A+ n* K  p9 W
  29.             }" l5 I4 I& K/ u- J3 K' N0 h
  30.             if (socket.readyState == WebSocket.OPEN) {
    % k9 [8 Q/ b9 ^1 c
  31.                 socket.send(message);4 d/ V( h1 x) G1 B: z  k
  32.             } else {% m; Z6 H5 e  s& b. }
  33.                 alert("The socket is not open.");
    3 X* l# _7 \6 m8 C7 x
  34.             }1 _& F/ i1 m' ?0 Q, t7 d, d
  35.         }& F& ~; f% [( h
  36.     </script>
    4 r  A0 o3 q6 H9 \, r  h
  37. </html>
复制代码
+ ?' W2 O. s2 Z- P6 W

7 _8 O5 N  b/ U: o! I; b8 B4 b
( K; V7 E1 ^1 X6 P8 A1 m& A5 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-22 21:00 , Processed in 0.105123 second(s), 19 queries .

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