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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

* _3 A" x' E9 C, l& Q

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
9 u* a8 l, W) [$ |. w5 `# k2 D
$ S, y# l& H* t4 f
  N9 D; K6 g+ }0 e4 X该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    # }: ?! ~$ H4 y* j- ^6 N
  2.     }3 s1 B% {) y: p  b  e$ s- B8 I
  3. 6 v' A& i9 w8 G0 T
  4.     socket.onmessage = function(){' U5 R0 k* |" J3 }7 S
  5.         //在event.data消息数据2 A9 I- l7 D+ @8 q. Y" I
  6.     }7 E! b* D2 F0 ?
  7. # j) j$ i2 s  S1 a
  8.     socket.onclose = function(){& P9 `: X7 S# t
  9.         //关闭WebSocket/ @/ l& c, M: k6 P# O4 A3 L
  10.     }
    8 _* ~1 e% |. p4 T& C5 O
  11. : G& H; Y# |) Z+ F! T: L6 c- }
  12.     socket.onerror = function(){
    ( ^' n- P6 D" d! y9 D5 V
  13.         //错误触发* R$ W) K9 u, l7 i: ^
  14.     }
复制代码
! I9 P# K1 b+ j1 ]
0 u, x  ]5 f. y) N; o- s

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

  1.     socket.send(message)
复制代码
0 b$ O: c) V* \3 H

+ P  D9 w7 i+ f+ B3 Q3 d: g) O8 I7 X! D& {5 L# L

代码附上:

  1. <!DOCTYPE html><html>& O( d  N  \3 \
  2.     <head>
    ' W0 o* @: j2 r1 b9 n8 u
  3.         <meta charset="UTF-8">
    ' W* z( S6 F+ B& s
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">9 k9 h; g: x/ @  P1 \$ q/ l% k# m
  5.         <title>WebSocket</title>) z, z" N' y9 I$ n6 J# G
  6.     </head>. X. s. a8 D7 j2 {
  7.     <body>) d6 @; H2 ~# V3 j9 j
  8.     </body>
    , v. y6 `6 _2 t3 y2 Q. c
  9.     <script>
    8 \% _# L1 e9 S/ `! H, g0 m% C
  10.         var socket;- {! q0 K1 r* u. u6 P2 e8 u
  11.         if (window.WebSocket) {
    , }4 N( c3 N% I0 h+ o
  12.             socket = new WebSocket("ws://localhost:8080/myapp");3 P1 A9 X/ o2 {, C! M; i" v0 `7 A9 i* y
  13.             socket.onmessage = function(event) {
    0 m  `: Q' s+ F' X3 y' V0 F
  14.                 alert("Received data from websocket: " + event.data);0 o: Z# Y% w1 J+ z
  15.             }
    5 Y) f! p9 w: {" ^# `) f" R
  16.             socket.onopen = function(event) {
    9 J6 g+ i/ ~+ B" }
  17.                 alert("Web Socket opened!");+ s$ [, D" {6 d* \7 H; f
  18.             };
    0 ]& M/ M& d3 N$ T9 {6 ]
  19.             socket.onclose = function(event) {
    4 |) n( A  v+ v0 t
  20.                 alert("Web Socket closed.");
    " U8 I( [: z5 {$ h. @4 h$ _
  21.             };) H( U% s9 O1 Y8 @5 p( u4 q9 H
  22.         } else {* D7 N* _+ Z3 g* J, F6 l
  23.             alert("Your browser does not support Websockets. (Use Chrome)");: D0 ~- Z$ I5 v" D
  24.         }% ?) O: H8 R  |) T

  25. 2 z( G/ N% T+ z. Y3 h- K
  26.         function send(message) {3 D9 l3 {0 {, O3 R4 Q3 v/ z
  27.             if (!window.WebSocket) {
    + ?- ?% \, Q4 J3 M$ P
  28.                 return;2 M% k/ Z$ A3 n+ L
  29.             }+ d( ~3 |! G- k+ l' k" P: V
  30.             if (socket.readyState == WebSocket.OPEN) {
    % l- \3 g7 z- U& i% M( ~
  31.                 socket.send(message);+ F) Y3 z; V  J+ K2 F5 U
  32.             } else {2 }3 U8 A) K- ?
  33.                 alert("The socket is not open.");
    2 G% U  p% J- p* l- E& Y" R- O
  34.             }( G0 W) Q2 I5 V& A% o
  35.         }+ o+ i- e0 c6 K( ^6 e2 }
  36.     </script>. R: s# S( j$ K: _
  37. </html>
复制代码

+ w3 C8 Z1 l8 n; B. W# _& Q; Z0 i% o5 a1 l0 Z
& o8 w! {7 L/ r" Z) U* [! e! m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-6-17 06:00 , Processed in 0.158937 second(s), 32 queries .

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