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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14887|回复: 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");  
复制代码
8 W+ d8 z3 \" [0 A2 m

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
1 b  q* {* B$ J' ^2 @7 ^5 O6 r
9 _2 b' p1 W$ I  c7 K3 h5 w5 q( H( f- ]* a) @+ {
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    8 s7 E6 w7 n' `7 X4 E7 E" Q" d2 A
  2.     }* Q0 L4 S! o6 m4 F/ U% U  n$ t

  3. 7 g/ E2 J$ \  u5 }
  4.     socket.onmessage = function(){
    5 x" ^+ a3 C8 E2 f6 x
  5.         //在event.data消息数据( f; v$ z/ z( l) p9 ?
  6.     }
    $ ^  N, \* ?3 p. P+ V+ k- |
  7. 3 R) q( f# X- f! F
  8.     socket.onclose = function(){
    " K' R8 f4 j: M) H
  9.         //关闭WebSocket2 P0 E) \+ w& r& [0 S, J) J
  10.     }+ v( |' A/ u% i# X

  11. : ]9 G% Y& Y# i$ h* d4 G
  12.     socket.onerror = function(){
    " [; P* p# d9 O) i
  13.         //错误触发
    1 T! a+ D, J0 q4 \( |
  14.     }
复制代码

: {5 R! z* R' t# r0 T0 o- h* h( z- M* Z  H0 ]1 f; p0 ?9 M

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

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

3 S: m$ o( ?# g" V: R! x1 B& E' B3 u8 [' O5 t
3 X- ]+ x( B; Y7 M, X4 P& G7 D, S

代码附上:

  1. <!DOCTYPE html><html>/ s. C, w- c# O% p3 |; ]
  2.     <head>
    - r9 J4 d! A0 c; m
  3.         <meta charset="UTF-8">
    ; S# d/ @% K0 n* _5 z+ S
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">' y# l4 h6 A. b, I+ M
  5.         <title>WebSocket</title>
    " q* U0 _! `' A2 F% \( o
  6.     </head>
    . i! A6 G" G0 e
  7.     <body>
    4 K. z9 ?2 ^5 X. a# G, s) e5 f
  8.     </body>
    2 f' _$ q' X, z( ?# J
  9.     <script>
    ! p/ X. F4 C  X6 g) Q
  10.         var socket;
    * c3 J- o, D+ p
  11.         if (window.WebSocket) {, ~' H! m) a. _# Y# p8 R
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
      f8 u; O# [& |  d3 }8 Y
  13.             socket.onmessage = function(event) {7 \  L: _1 Z  v4 S1 s
  14.                 alert("Received data from websocket: " + event.data);
    ) W- u9 i& A1 Q0 _' T7 P" ]6 Z
  15.             }, M9 D1 `* l6 p+ Q8 T) S) h
  16.             socket.onopen = function(event) {
    9 i3 q; ?" q1 F) s" I
  17.                 alert("Web Socket opened!");' e" n% |/ c5 G, A" ]1 D5 Q& \) o# U
  18.             };
    ( `- H+ A* H9 G9 w7 l
  19.             socket.onclose = function(event) {: o4 c% k( k% e
  20.                 alert("Web Socket closed.");
    $ m# ]0 D$ N2 j
  21.             };# K8 R, e/ I/ z5 L9 H& l
  22.         } else {
    ( i& [( y. L  T
  23.             alert("Your browser does not support Websockets. (Use Chrome)");4 K5 d7 @0 i# ]4 @- P+ W+ h
  24.         }
    , h  r- N* m% Y2 U+ m2 r
  25. * k( Y9 F% v2 c
  26.         function send(message) {
    % x/ h3 |% N+ c8 R
  27.             if (!window.WebSocket) {5 x7 O8 p6 j. O
  28.                 return;
    * y3 r! C2 d, P: M3 n9 b( u! L
  29.             }+ L/ ^5 q  V- m) y, G
  30.             if (socket.readyState == WebSocket.OPEN) {
    # e0 Q7 r; x0 s5 Y
  31.                 socket.send(message);9 j/ B3 `/ Q& g3 s! [
  32.             } else {
    * {* j8 O9 P3 p9 e6 V
  33.                 alert("The socket is not open.");
    # K0 \7 D) B( D7 a& [
  34.             }
    % F3 z+ c% z6 F# L) g
  35.         }
    7 O7 \7 ]. h, B- e2 u
  36.     </script>
      J3 M8 v5 V" P
  37. </html>
复制代码
' H8 ~; {9 |$ A% ]9 V6 G

0 n+ [7 m3 }1 H7 Z7 ?1 `5 x5 H+ C
# {& \+ C6 e8 [- A# B  p( ~, a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 03:07 , Processed in 0.066141 second(s), 21 queries .

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