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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

$ D2 Y# W- |: i+ f* r5 X

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 8 i7 a1 {0 o. M: ]4 \* h: @; A
. _9 M9 N1 f3 }& W! M; [, l

( S. @( r8 c# ]0 B该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开4 o9 R; W* g$ n8 `: V2 E* t2 j: N
  2.     }0 Z3 j' u8 n$ E5 t* [
  3. ! O  j+ o) h+ w
  4.     socket.onmessage = function(){
    : B; e( t# w, I2 E
  5.         //在event.data消息数据! L5 g, m$ C* z. ?& l2 b% J# i7 x
  6.     }2 A' {4 K- r5 S6 Q- U/ i0 ^+ }2 E
  7. 1 d5 q1 ~+ o9 B& p8 s
  8.     socket.onclose = function(){5 G* ]7 t. I! J
  9.         //关闭WebSocket& t* Y  t4 Y" H7 I
  10.     }
    " V9 ^; l5 n" V! @1 K" F

  11. " ^4 D& x7 Z, q; c- ~5 E& O
  12.     socket.onerror = function(){
    5 Y- j8 n9 ^# V) g0 ~
  13.         //错误触发
    6 K7 _( J9 A- X8 R# z. r
  14.     }
复制代码
7 Z- O+ j' m* H
* d+ |) K7 F, _3 b, ^5 M

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

  1.     socket.send(message)
复制代码
3 W8 }0 P! b5 V7 S9 Z
' [; e. Z& y6 p/ n0 g- P4 t

1 {/ Z" |+ d$ S( d, S- W; G, F: H

代码附上:

  1. <!DOCTYPE html><html>) |3 |3 D0 E7 o, Z6 ]8 m
  2.     <head>9 x' j. K3 q2 t2 V  g2 L& A
  3.         <meta charset="UTF-8">
    7 q# k& q+ f1 u6 j+ d, o
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">+ q- o3 [3 `1 y: L6 A4 j# v! p, i
  5.         <title>WebSocket</title>
    6 f/ X7 M& Q0 Q4 b( _
  6.     </head>( c) y& m8 F* d) ~' g
  7.     <body>- R* O2 P; f" \, {. v& r# R# F
  8.     </body>
    2 B" [: S/ D5 f4 A) ~: s  K- T
  9.     <script>
    . ?$ M6 ?4 ~* ^
  10.         var socket;
    2 X/ h! A  H( o# w
  11.         if (window.WebSocket) {# m6 L9 P4 B- r& V% h1 U  b
  12.             socket = new WebSocket("ws://localhost:8080/myapp");. ]7 @$ ?3 O8 g. m/ m
  13.             socket.onmessage = function(event) {
    2 K9 [5 I1 w" ?  O9 M
  14.                 alert("Received data from websocket: " + event.data);
    1 v; X- K0 y* D) ^( N) g# l6 o
  15.             }
    2 p" y( G* _9 @6 i/ F3 b& \
  16.             socket.onopen = function(event) {3 {5 T; i/ z% I0 `  I+ S3 ^
  17.                 alert("Web Socket opened!");
    1 b) ?# c5 `6 i' m/ J6 C9 e
  18.             };
      S$ z& Z1 y3 \- M0 H. v5 K
  19.             socket.onclose = function(event) {
    ! q6 h  J: i0 G6 j6 C3 @
  20.                 alert("Web Socket closed.");
    * P4 ~4 ~9 {; C$ Q
  21.             };
    . I2 ]8 F# z9 f: [7 J
  22.         } else {2 u% ]% o: E3 n" M3 A" ~( \
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    . Q% E) n9 m$ e' E% `0 @/ P
  24.         }
    1 O# y+ R6 Y* Q; S+ R8 O

  25.   I/ \- ?% s1 T, d
  26.         function send(message) {7 U& D0 V1 M1 u
  27.             if (!window.WebSocket) {
    * j) S! t5 W; ]; O" @) @8 p6 ^
  28.                 return;. U; S$ o+ `6 {/ v
  29.             }
    4 O$ a" x6 u' c- F* J
  30.             if (socket.readyState == WebSocket.OPEN) {
    * j3 [6 `/ f$ ~
  31.                 socket.send(message);, d" c. u, P7 t' h
  32.             } else {
    / q$ e- N+ O0 x, z9 b( e
  33.                 alert("The socket is not open.");, D4 S4 @& o  Z8 t4 y8 `
  34.             }
    % \3 y. Z: K1 _/ k; \* s) D
  35.         }
    - p+ t; D- w2 h6 G
  36.     </script>
    1 ^7 Y' v  N2 S/ e6 X% z6 f
  37. </html>
复制代码
7 \; G  V6 F4 ~% T& B
& V& G# e$ H, h/ ^8 b/ m3 h1 c

7 m6 ]  j# T. ?# G, I: B' }+ A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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