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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1 f+ t1 o6 v& i* e! I# G

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。
9 G' M& \1 U; s. F- q
9 H- L( A+ _. q4 y: w, v
* |8 w4 o" u$ V4 z# Q该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开: [; F$ p" T% i9 T& Q
  2.     }
    3 k$ R. p6 T2 }+ F

  3. 3 u4 X. y6 W( i% w  Z+ d0 a
  4.     socket.onmessage = function(){' q# B3 x5 k+ o% u
  5.         //在event.data消息数据
    3 r- T1 Z& ^( U7 L& k; l" q
  6.     }
    / b2 D2 \, Y/ y
  7. ' J6 g2 i) `* m+ H) J: h/ u* I. W! m
  8.     socket.onclose = function(){
    ; f8 N3 D+ o# r" l3 _! d6 v
  9.         //关闭WebSocket
    2 E, D# J! f! s+ O) H
  10.     }
    # E+ g/ X$ p6 ~' A2 M

  11. 0 E) s. S5 D' m9 E* Y2 s# R' N: i: Y
  12.     socket.onerror = function(){
    ) j- Z4 J- e; ^; L& v5 d( E  t
  13.         //错误触发% Q- E" p$ s; N1 J) |
  14.     }
复制代码
. a8 F+ J  d5 V- K

' o$ L( ]& a9 t* d" S4 `* l

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

  1.     socket.send(message)
复制代码
0 O7 c* j& v; w7 _6 p1 t

% x+ h: ^9 F2 {0 V* V# q  ?  |* s( ^' M/ F7 I; f! c) W

代码附上:

  1. <!DOCTYPE html><html>
    6 S! e8 C$ x1 w& W
  2.     <head>6 o' m' t: G( g# F: Z' B
  3.         <meta charset="UTF-8">
    / h$ `5 [' K, w, U  f' L
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">
    % y* ]9 f. c' h' ~$ Z1 S
  5.         <title>WebSocket</title>
    1 `' [. P- e. b! q; P
  6.     </head>, y' I# d  o: `" A7 E
  7.     <body>1 q' r; I7 _4 s  P
  8.     </body>
    % R) T- |; ]  c2 F! S$ q
  9.     <script>
    / L) `7 I0 u' C9 v0 P+ L
  10.         var socket;
    " U6 i# ]% A( H% e* q8 e3 r8 L, Q. R
  11.         if (window.WebSocket) {/ o# D3 t, k& K: |$ Y8 w
  12.             socket = new WebSocket("ws://localhost:8080/myapp");
    2 S7 g5 d& N9 B% z
  13.             socket.onmessage = function(event) {
    & u# [( o" v7 S- D8 K0 L
  14.                 alert("Received data from websocket: " + event.data);! ?$ z2 F7 k. `1 O
  15.             }5 G& u! s& T# w# m
  16.             socket.onopen = function(event) {
    + ?. p9 N2 X% `, D* m9 `  k: t* \. G
  17.                 alert("Web Socket opened!");
    . k6 G9 ?/ t2 K$ b: f! J1 I+ r# y
  18.             };4 [6 I6 l; N# Q& `- t4 L
  19.             socket.onclose = function(event) {
    % Y( `* l& y8 D2 s
  20.                 alert("Web Socket closed.");
    , |, u3 [4 K4 Q$ d- ]* B( q
  21.             };
    2 z0 R0 L; ?" B" h/ Q
  22.         } else {
    ) o1 }% w" r4 G6 w2 F# l
  23.             alert("Your browser does not support Websockets. (Use Chrome)");- c8 h, h- ~1 c- ?+ h  D9 W. j! @' i
  24.         }; j4 w3 W: ?% w( _" X& \6 M5 c
  25. * A$ Z8 A" J5 j3 D! K, i
  26.         function send(message) {
    " c) c' y% o! f
  27.             if (!window.WebSocket) {
    * [2 Z" Z) P  e9 ^8 v& Z
  28.                 return;/ y$ d! i+ F2 c* n2 o2 S+ d; v
  29.             }7 ]3 Y2 |  r6 ^: k# W5 B+ f
  30.             if (socket.readyState == WebSocket.OPEN) {
    5 v, Z/ l( _' Y/ i8 D" {
  31.                 socket.send(message);
    & m# a. e# P8 G' N$ n
  32.             } else {6 L, s* c1 V% F* p/ G  Q$ _+ Y# d1 G
  33.                 alert("The socket is not open.");0 t! _  N! y4 Z4 b6 H, X1 ~. K' X; j
  34.             }
    7 J4 v/ T0 C" r# s' |
  35.         }
    $ c( D0 W9 g6 t9 }+ n; v1 P3 B
  36.     </script>
    " V8 x4 r& J1 f0 ^
  37. </html>
复制代码

+ S! W5 |: F: n7 X! r2 y- H' Y  _! V( ~& ~
/ N* V) s+ m; Y& @- c# T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 08:14 , Processed in 0.049052 second(s), 20 queries .

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