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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15278|回复: 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");  
复制代码
% Y" H7 ^) E4 I& f- o5 }2 T( Q/ Y

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 & H) u( s3 f0 D6 y- K  ]' n& L
6 t/ w' b, @4 J2 f  f
) D- Z% y$ ~( k4 Q' U1 T
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    5 R9 j% r- U- n& V
  2.     }
    * r* _6 E8 ?; K  c4 U* U) W

  3. ) k, ]9 }7 m% T0 W# \3 q9 X
  4.     socket.onmessage = function(){
    7 i4 g( K9 w% D# u; w
  5.         //在event.data消息数据1 q$ Y3 O- k1 D7 A/ u
  6.     }
    " p. R2 Y% `4 C8 r
  7. " s* v7 g. T3 L# j% f
  8.     socket.onclose = function(){
    ) ^" S( }8 J* i1 h( i5 A* F
  9.         //关闭WebSocket  j  s% d8 @' C$ F  D( I$ B1 T8 k
  10.     }" t# r7 S3 d" e  a/ z# K

  11. ; U# M9 a3 ~3 }. u
  12.     socket.onerror = function(){; Z  |% H, G) _
  13.         //错误触发
    8 Z$ W7 t; \6 l- Q- q
  14.     }
复制代码
; |: o4 S' U) Z8 J7 i
6 o$ j" x9 J, C2 b- {$ Q

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

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

* Q# i0 r" F' {! ^* T* a! U% t& s2 v$ Z
4 x5 n+ s9 z/ Z7 `- B& x

代码附上:

  1. <!DOCTYPE html><html>& @! U7 z1 K" l( }* k& F% N. R
  2.     <head>+ G+ c' i; w! m- Y; T
  3.         <meta charset="UTF-8">
    % u; g% L3 ^' A
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    2 m  u! Y; f" o6 \% M4 O: D
  5.         <title>WebSocket</title>/ ?7 l* I) @+ ]' f  u: R
  6.     </head>
    : P: j$ @/ ^- f
  7.     <body>
    ) y* I0 S/ w, h
  8.     </body>  {* Z% F3 U4 }8 J; h8 T- q
  9.     <script>
    ( A0 N3 x/ d% E; ]7 I0 s# Y# V
  10.         var socket;5 E/ }8 V0 x. ~! B: h1 S- `
  11.         if (window.WebSocket) {
    4 L; E# k8 c% N$ M  y
  12.             socket = new WebSocket("ws://localhost:8080/myapp");. u6 d' V( _+ i8 T2 v# D
  13.             socket.onmessage = function(event) {
    3 M6 a/ c) j' g1 Q( N% k
  14.                 alert("Received data from websocket: " + event.data);
    $ P$ [4 Q$ E3 \; Z$ c
  15.             }) }3 o  v/ c( u8 }8 J
  16.             socket.onopen = function(event) {
    ! m/ D" _& P, G7 V! s
  17.                 alert("Web Socket opened!");
    : E, P; D5 c# `3 n8 t; R
  18.             };, b% `( `! }$ Z# {2 h9 @
  19.             socket.onclose = function(event) {
    $ |& d1 o: Q' a4 _# k
  20.                 alert("Web Socket closed.");
    " T! K& l/ T9 O, `6 r9 m
  21.             };  F% l  i% u5 N+ ^& k, N
  22.         } else {  @" J4 @# H- \9 x# F- K5 I
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    7 `( ]3 @' k9 P! L9 Y
  24.         }
    ! y9 b' s# m1 Q1 F$ u6 Z$ l2 ^3 a9 J% m3 X

  25. 4 y. s- E: v& G: d1 @. j+ |
  26.         function send(message) {
    3 C! w. {6 ~, L# D6 k
  27.             if (!window.WebSocket) {
    * u' z/ f1 N& K9 Q! J
  28.                 return;
    5 ]7 G6 Q7 o% ^" g) z
  29.             }& X2 S" w; X2 _, N% t
  30.             if (socket.readyState == WebSocket.OPEN) {
    ) E$ m; A2 n5 `1 l
  31.                 socket.send(message);
    5 c! F. k- P! d0 G# @
  32.             } else {9 d, b: s$ v2 s& y' f5 T
  33.                 alert("The socket is not open.");
    7 ~/ i8 ^1 P- L2 R1 J& A, B
  34.             }& l" h/ p  G' m: R' o
  35.         }
    9 ^  m6 _% |% ~% O8 G
  36.     </script>% F& X0 t# H' ~+ I0 I
  37. </html>
复制代码

# E; [) o2 t) r2 M  s& q; f: `: ^; U* F

0 c, i+ N% m3 Q) z& B) a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:46 , Processed in 0.055585 second(s), 19 queries .

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