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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

4 O5 k, J( `6 [. R  ?: p' M+ E

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
! I  b$ _: U! I! k& S8 b  F( d# i8 y) z, B3 b  g( H
3 @& `/ K) M* K- R( ~6 t
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开9 K9 N4 M% x5 i; M7 A- h7 a
  2.     }# W1 ~6 F9 i2 e3 z
  3. 2 u6 ]6 ^3 v* |3 [$ u3 ]2 Y6 O
  4.     socket.onmessage = function(){% ?, k* A  S2 ^2 R' _8 {' Q# }# s. W( n4 J
  5.         //在event.data消息数据
    5 D& s9 g7 \! m/ U1 b
  6.     }
    : K  W9 g/ q/ i0 A$ S" c3 J- ^, k

  7. " i, Q  H' w0 X: b3 \" @
  8.     socket.onclose = function(){
    0 X% p3 ~* [( U
  9.         //关闭WebSocket8 C" ?5 T9 [6 ]
  10.     }
    - ^  w) s- R) ~# h3 d

  11. 1 ?$ w2 R9 U8 r  J# z1 f! G9 D! l
  12.     socket.onerror = function(){
    9 r1 D+ X3 o7 z8 J& S
  13.         //错误触发  g% q$ A& X2 N5 Y6 {+ C
  14.     }
复制代码
9 x6 L; u. P& q, w& m

/ ~! d: d7 V' t% Q& N% M1 r! c# B

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

  1.     socket.send(message)
复制代码
8 o. u# o3 Q+ h  D% {

7 T. j/ s2 g! N. K+ n$ u1 _7 n" C. b1 K$ L' o' Z6 Y6 R

代码附上:

  1. <!DOCTYPE html><html>% \$ D0 S- @5 G! k
  2.     <head>- D6 E2 h- p  E& R! U5 G
  3.         <meta charset="UTF-8">
    / S3 n1 _; N3 j6 a5 K, n# o0 [
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">0 C4 p8 U' V0 X7 I( O
  5.         <title>WebSocket</title>- V( l+ i/ X# |, J- s8 W
  6.     </head>7 a- U4 T; Y2 f0 Z& p
  7.     <body>
    ) c5 o5 W' @, A$ a, a- D0 a: M
  8.     </body>6 _* q4 l" S2 w
  9.     <script>& \3 U2 x* Z* a. P% n( ]; U. @. b: h
  10.         var socket;
    3 N* O6 \  e+ l8 _
  11.         if (window.WebSocket) {
    8 d8 i* L6 A! [4 ?  j
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    ; M8 V$ a, D1 @: v) p5 n  b0 z2 Y
  13.             socket.onmessage = function(event) {4 b* k0 C# o) p! ~; d
  14.                 alert("Received data from websocket: " + event.data);3 B  m8 _- A# A
  15.             }
    0 M% P8 z# ]; o9 d7 h2 g
  16.             socket.onopen = function(event) {
    # s: o% c3 ?, s, k5 O. y; ?( s
  17.                 alert("Web Socket opened!");
    9 o$ g- b6 F+ x4 s
  18.             };
    2 p, x% t7 b( f- H# I1 D  E0 S  D" j
  19.             socket.onclose = function(event) {. l% A# B# i0 G: S' L- @8 ]
  20.                 alert("Web Socket closed.");  h; w5 G2 O" z3 h2 B4 m5 A" R
  21.             };% o. U, j, O; i0 _- v' w
  22.         } else {7 B# g" d) k; L" s. O
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    8 R7 D; T: f7 c4 h3 {8 l
  24.         }! U8 |5 l- d$ X( t2 y6 p
  25. 9 r0 D7 j+ }, @+ r9 G
  26.         function send(message) {
    6 d- T4 n2 ^2 h" w; p2 L, _) o0 K5 C
  27.             if (!window.WebSocket) {5 N- q" @: O% ^- K7 s8 ]. W
  28.                 return;
    9 t; e& |1 A  R1 p4 I# ~0 E
  29.             }& `% O4 f( l3 g
  30.             if (socket.readyState == WebSocket.OPEN) {
    5 }0 O( d! v1 Y( j# }
  31.                 socket.send(message);% S  k; ~: y4 z4 J. d1 e
  32.             } else {
    + X: W# A" B: `+ K
  33.                 alert("The socket is not open.");
    3 G9 l9 [& l/ D$ X
  34.             }! ^3 S( m! o+ T, |" Y* U# P9 O$ a! q
  35.         }4 N- t$ N6 ^: a6 Q( h
  36.     </script>6 \' E) }7 U; \  t3 O+ N
  37. </html>
复制代码

" s0 x! y7 u" T5 m3 d4 @( n4 j
7 O% J$ ~# {2 A) F& v, |1 D& I  a# x- B: I$ \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 00:01 , Processed in 0.054154 second(s), 19 queries .

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