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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14714|回复: 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");  
复制代码
! R3 \" J7 B0 V. i

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
1 h& c8 s; ^1 i7 b- ?2 d
+ Q; E9 _( r) {! S' t- @. n( I0 {9 e: g" M
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    # C6 ]! q# Q- T9 |7 i
  2.     }8 v" {* k, s. [% k; N

  3. % m8 L# N0 w, k2 E6 M( \* U/ V
  4.     socket.onmessage = function(){4 E# z% D; v, E' H2 F/ u( r  c# s! _
  5.         //在event.data消息数据
    # c3 H5 [4 u* |
  6.     }5 |7 ]3 o8 |, j, U

  7. ; i: O4 f+ R" o* h# m) j: N* y* z
  8.     socket.onclose = function(){
    1 s0 z- K/ {7 x
  9.         //关闭WebSocket
    1 q; K- s8 U, Y6 s; n6 ?0 u
  10.     }
    : E3 }# ]( i4 a6 K
  11. 6 t' R1 A5 W8 @" `6 E* r/ }: d
  12.     socket.onerror = function(){
    ; B. j6 g, Q9 V$ `. Z7 R* R
  13.         //错误触发
    " R; r5 G7 [, C" a/ W9 H/ i/ y
  14.     }
复制代码

/ p- K8 C. Q$ C7 ]' K" ^, B( t$ ^& A9 }' A* u& e1 M

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

  1.     socket.send(message)
复制代码
8 `" s' _' A9 p5 b
4 |7 V6 X: b  d4 V$ X7 T7 u
, Y0 ]( p, G0 d( V- T

代码附上:

  1. <!DOCTYPE html><html>6 l  o7 e) v7 s: w; b7 E' i& L6 O8 V
  2.     <head>
    9 |& ^6 y5 i3 n' l9 M- z+ Y
  3.         <meta charset="UTF-8">
    1 f+ t) S& H# {8 H
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    : ?+ m  D5 ]  F5 a& V# M
  5.         <title>WebSocket</title>3 E: b4 M7 T" `4 c2 d) ]/ G
  6.     </head>* X2 p, y' b$ D4 \  ?, M
  7.     <body>
    4 {0 A3 q; L# D: ~% \$ f# }
  8.     </body>
    9 c1 j! [4 c( U: A" A: B8 |4 N
  9.     <script>" v: A" c; w( u: a& Z% M# A9 \; C: N
  10.         var socket;% M- M7 f/ E6 S6 [: s
  11.         if (window.WebSocket) {
    5 z; i4 Y: c! K) p; I  _6 v
  12.             socket = new WebSocket("ws://localhost:8080/myapp");* q9 t7 u- Z$ l) G* A( q$ ~( r
  13.             socket.onmessage = function(event) {4 W' U/ n$ _1 P. Z( Z' M
  14.                 alert("Received data from websocket: " + event.data);$ ]9 ~! @; }& u" ~! P  ~
  15.             }* }% L6 Q# h- _% `2 S4 Z" w
  16.             socket.onopen = function(event) {- y0 o0 D" h4 v3 [1 Q/ @! A
  17.                 alert("Web Socket opened!");
    ) o7 R) q# R& o  l3 p+ X
  18.             };" J- D* s  ]9 P/ D: E# ?
  19.             socket.onclose = function(event) {, Y0 a' b/ n, Y6 g5 l) j/ a4 O
  20.                 alert("Web Socket closed.");
    ! h( L% S' N) Z0 u8 N- C6 x& j
  21.             };
    / P% Y# Z. t! w* `1 ]0 o3 K' j7 o( o
  22.         } else {
    2 x' V, a# j. {0 h
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    4 l% e1 k' E# q1 n- r1 z" p
  24.         }' Q, V2 ^! Z8 H
  25. , d5 B) y4 M3 L* g% z4 C
  26.         function send(message) {
    ) ]# s& \: `2 k* O& R6 ?
  27.             if (!window.WebSocket) {6 K* d/ h' B. V  w0 E
  28.                 return;+ r; T0 L* W0 ?; F) q! a
  29.             }
    5 ~' p( T9 ~' L( p2 u8 C9 O9 q# _# r" f
  30.             if (socket.readyState == WebSocket.OPEN) {! M0 W5 q! Q5 q7 D% ^* n
  31.                 socket.send(message);7 M: S1 H0 `( U  O* C0 r
  32.             } else {( C2 [! i8 o3 ]7 \
  33.                 alert("The socket is not open.");
    ( z  n- X" K7 c0 X* K
  34.             }+ Z. K$ S0 ~, W7 c4 ]% h
  35.         }
    5 q, @" \3 f% g1 f1 I
  36.     </script>9 m% C3 w' j& R
  37. </html>
复制代码

  i: Q0 C: x* k: s& i; v
+ p9 [5 E  l) j& ?: W2 @3 {' v8 `+ j! W1 y8 D1 D% K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-4-30 19:58 , Processed in 0.054929 second(s), 20 queries .

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