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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9818|回复: 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 I0 e* I& E, u2 n) G

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 ' g6 p0 X4 a8 A. W& u4 s( n
9 n8 K5 z' z# l& I" n, q% x
- L% M# g  C; W# ~1 \9 `+ K
该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    % \  H3 g; r; n8 l% @
  2.     }* v* \  h% B( i2 E+ w3 \
  3. + f8 |3 ]  \0 e' G% f1 ~
  4.     socket.onmessage = function(){  o# o+ |% [* k3 \
  5.         //在event.data消息数据+ }; E0 l" k  ?! w
  6.     }5 S5 h) ?6 l! R. D/ `
  7. ; W; _7 y5 u( r3 {! E( ^
  8.     socket.onclose = function(){$ z1 T8 \* @, }6 U% ^  N
  9.         //关闭WebSocket
    " ^" L9 R( s0 ~/ R0 c
  10.     }
    ! J' B6 g6 o. ^+ p

  11. ' B) e- k# z) n9 Q4 @2 P) D
  12.     socket.onerror = function(){
    ' [0 z' Y( r& \: {- b4 n4 y
  13.         //错误触发
    ( ^" }4 U1 H: h# E  H- o9 ^# F2 V
  14.     }
复制代码
$ J0 g2 l$ e; b% x8 F1 g  L8 Y
" ^+ f% w/ l% @; o6 y$ k' ?

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

  1.     socket.send(message)
复制代码
. n) p" A% R3 t: m

& |6 y3 g% W* \/ {5 L1 V: {5 ~( z9 M  P( L1 U8 t

代码附上:

  1. <!DOCTYPE html><html>
    * W5 e$ S7 b+ t- i" J; P
  2.     <head>
    ' Q7 k8 X1 A. `0 X9 q2 R
  3.         <meta charset="UTF-8">4 w3 J/ P+ x! x/ n* x
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    3 J+ o8 [: d$ x# Z" _! A  }
  5.         <title>WebSocket</title>
    & Q4 q! r$ o0 [
  6.     </head>
    ( o) Z; q- {+ d
  7.     <body>
    , Q9 v9 X: j" c& t* ^6 g
  8.     </body>
    7 R) H& O* H7 L+ o/ m* j" V
  9.     <script>! H7 K7 b0 z7 W8 ^3 o1 `4 T. k
  10.         var socket;
    7 Z8 m; `! i/ G5 q/ A
  11.         if (window.WebSocket) {) n0 |4 M# E% z4 k
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    , \* J" T, |9 v) |: W$ Y5 I
  13.             socket.onmessage = function(event) {
    7 S! ]4 d, P9 t/ I- m6 o% h
  14.                 alert("Received data from websocket: " + event.data);
    4 P  n. b0 k8 A" u7 s& W6 p" ?) a
  15.             }
    ) T' w8 M4 T' ]
  16.             socket.onopen = function(event) {
    - I& s. R# L  n- z. ^, m8 o4 I+ j
  17.                 alert("Web Socket opened!");; g# A; f  @0 C
  18.             };8 a) T" e4 l- w
  19.             socket.onclose = function(event) {
    9 U7 Y/ z8 H6 Z! y6 _
  20.                 alert("Web Socket closed.");! G1 ^( V; `) }8 e
  21.             };' N5 P3 t) \8 o5 Z  D  j: N- f
  22.         } else {% D5 @1 Z" M% t$ q! c
  23.             alert("Your browser does not support Websockets. (Use Chrome)");/ r, Y1 ~* {' b0 P
  24.         }7 [. U1 a& Q6 w; M) ~! [. W
  25. / _$ p/ E4 [: v) k9 H2 S
  26.         function send(message) {
    * _8 [- J) {2 O
  27.             if (!window.WebSocket) {
    3 ]  F/ W# y- ]. S3 x
  28.                 return;
    % Z# D, y6 R( s7 `! m
  29.             }2 I- {8 I/ N  c" o6 Y  l! s& x
  30.             if (socket.readyState == WebSocket.OPEN) {
    " f  {8 D8 W7 n; G4 L3 s
  31.                 socket.send(message);( U9 Y, p. _8 r3 S) s6 B
  32.             } else {$ Q' Q1 T. ]* W" k# Z% U' l, _' F
  33.                 alert("The socket is not open.");
    8 X9 j. i! R7 l! X1 t1 b# D4 @, Q
  34.             }
    ' r1 @  n& F  c) P+ `; [
  35.         }" n/ g  u# q& m& D# J
  36.     </script>' N: U2 s/ \0 i4 ^+ T$ i& e
  37. </html>
复制代码

1 s$ O) Y2 {. U" i( w7 Q6 ~0 q
/ ]% }! {5 `% z# f6 s
, P+ u7 k/ `5 f! a( J5 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-4 13:59 , Processed in 0.119015 second(s), 19 queries .

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