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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10013|回复: 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");  
复制代码
- r8 R$ M- c5 ^( V9 z

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
, E. u4 Z- J0 O
. _  E  w  f- w* i/ ?( _7 S, m6 P, C
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    4 p  [, o8 c; F! S; _- Z
  2.     }' p* Z" }* r& j3 ]& L+ ~
  3. - K6 t( }+ ]+ |
  4.     socket.onmessage = function(){
    8 }! N! P5 t- G; B4 E, `9 m! s4 \
  5.         //在event.data消息数据( L9 f3 |8 w! F8 O
  6.     }) ^3 A# [4 |! r

  7. 6 k7 J& L5 K6 x, z0 t, V
  8.     socket.onclose = function(){1 S8 h' @7 d( j; m
  9.         //关闭WebSocket
    8 x- _: ~7 T9 O( j, O1 w
  10.     }3 c# ~. n5 ~; {
  11. & _+ P0 T; F$ B7 g  u; ^1 U
  12.     socket.onerror = function(){3 K$ J5 |0 X" c5 t- _1 s2 u0 h( V
  13.         //错误触发: u) B: {: ~$ q& O
  14.     }
复制代码
: B6 n1 v' W+ H, t

, T9 z0 |+ \/ F

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

  1.     socket.send(message)
复制代码
0 v# S+ w* h4 |+ o; R# p) l% E- G
* O) l$ ?1 ]' C7 F3 r1 o

9 [8 k! Z5 E1 k4 U0 ?( h

代码附上:

  1. <!DOCTYPE html><html>9 D9 i! ~& Z1 N
  2.     <head>
    2 n' H( w; e& ?4 }$ h3 g0 b' ]
  3.         <meta charset="UTF-8">
    8 {+ [  @- {% v% y: k' P- [
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">5 b- j' O5 f- E' K# s2 @
  5.         <title>WebSocket</title>
    . N* f' e3 o' N) Q
  6.     </head>
    2 W9 C+ @. _3 J, D
  7.     <body>+ @" U, r7 t. U
  8.     </body>* f8 }9 y4 k. L4 c$ o, x( Y
  9.     <script>) a  N3 n! x, c/ Y( y
  10.         var socket;, a8 ^# N3 o6 y0 j6 t
  11.         if (window.WebSocket) {0 y$ D* W3 g) B& i- S+ O6 |' L9 ^
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    % I) @. T, ?8 c, h
  13.             socket.onmessage = function(event) {
    # ]- F( p6 c0 |+ F: i
  14.                 alert("Received data from websocket: " + event.data);
    # ]' K) B# h. @
  15.             }! D" X* `# B3 |) w0 M) E
  16.             socket.onopen = function(event) {: H3 v4 g  \) x4 A& q7 _( N
  17.                 alert("Web Socket opened!");. e' E) C! ^; `, ]! i
  18.             };
    ! i' c5 j$ b  J& {2 D) {
  19.             socket.onclose = function(event) {
    5 n: r9 P9 X  V8 n+ c' N2 a# C3 a
  20.                 alert("Web Socket closed.");
      z% D# R  n" P% e" k
  21.             };* A9 ~* g. z: J( I% C7 ^! g
  22.         } else {
    & x+ a. I: j( ?- ]" _5 u4 I5 y' S
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    7 |0 D+ e: b2 T  F1 X% |% e3 }
  24.         }
    6 ]7 z5 P0 e- Y0 q8 x
  25. ( y8 O2 E" y8 k. b2 Q2 \/ |
  26.         function send(message) {- y+ [% ]; w4 ^' p
  27.             if (!window.WebSocket) {
    ' [9 M$ F7 j$ ?; R! E" g
  28.                 return;
    / X9 G6 \- `( T9 l
  29.             }5 p- y. H# K5 q7 g
  30.             if (socket.readyState == WebSocket.OPEN) {! [9 l' i* T# m3 E! x- j3 n( ?
  31.                 socket.send(message);
    8 i" v9 f& w/ D9 ^! Z
  32.             } else {8 W* |5 ]- f3 Z# {% k+ X: V; B
  33.                 alert("The socket is not open.");
    + R8 s  m6 Y( p
  34.             }
    7 N. r/ Q6 S7 r/ l/ V$ A8 i. m
  35.         }
    ' M  s, J# o+ c+ h+ F% K! R
  36.     </script>! h* w/ \# ]1 b
  37. </html>
复制代码

2 S+ E: G- Q9 \! \7 \+ f% k; o  g

0 r6 [6 @, d; I9 E; A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-18 14:37 , Processed in 0.120832 second(s), 19 queries .

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