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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14345|回复: 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");  
复制代码
7 Z5 P4 J9 \( J4 b- I7 H

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 0 l; A4 i& H  H8 |% y
+ @) Z/ X0 z# T

, C5 \* l; N6 n3 ?. d该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开
    ( N. W5 B* m) `
  2.     }
    ; a  e0 ]2 ^5 c* V6 f( H/ ^

  3. & [, _4 h6 ]  S$ {3 q  Q
  4.     socket.onmessage = function(){
    8 f1 H+ c! _8 p! o0 S: @
  5.         //在event.data消息数据
    8 A/ k+ j* J& T5 h
  6.     }
    * S5 C# y( t5 _

  7. 3 P: b; p3 w% H6 l5 }3 _. r
  8.     socket.onclose = function(){
    & x7 @' o4 ]1 V3 A" X3 c/ E
  9.         //关闭WebSocket. u5 P- l6 _4 E1 d" R: e9 K: R% G( [
  10.     }' X! m; u9 D6 c' M5 ]

  11. . a% t1 {# G( g, H% @5 w" E, ^/ L
  12.     socket.onerror = function(){
    0 [+ n. Z2 V- q$ |
  13.         //错误触发
    5 q8 l( I& Y- H5 D
  14.     }
复制代码

- R# o: g) N4 j; e- m
) i4 _4 l' c& l) x) B) Q: p4 u

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

  1.     socket.send(message)
复制代码
6 y+ W$ `5 S7 r. }% {: M

; I6 o4 I) [! {
4 @; d# ^2 l, d. J' U4 ^$ t

代码附上:

  1. <!DOCTYPE html><html>) S: p' ]; i8 X* J: x
  2.     <head>+ p: \- ~. D/ H+ I! @
  3.         <meta charset="UTF-8">/ I9 r8 F* x. u  r
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">2 W) Q0 `3 z) Z1 f; s' v6 B6 i
  5.         <title>WebSocket</title>
    8 E* d# e' Z. _8 [
  6.     </head>! n& O4 @* I6 `( ?2 e$ K" B
  7.     <body>" O9 W/ l9 B" Y% B
  8.     </body>. I4 j# R- R7 |7 U3 ^
  9.     <script>. N( d: ~* a4 G) L% l! A
  10.         var socket;2 S1 }; {' T' \! S2 f
  11.         if (window.WebSocket) {' ]8 C, a4 Z8 j4 d! C5 Q* b) r! a
  12.             socket = new WebSocket("ws://localhost:8080/myapp");: H# d7 I" h; j2 }+ ^3 z
  13.             socket.onmessage = function(event) {/ x5 @4 U# B- l) l1 D
  14.                 alert("Received data from websocket: " + event.data);2 K) R% z: C6 l' T* T
  15.             }
    ) A8 c7 D% d3 K
  16.             socket.onopen = function(event) {
    % I; a% d% e6 x; V* g
  17.                 alert("Web Socket opened!");
    - }* s6 R* k; n- {% N" e+ D3 w/ J
  18.             };7 t- _+ A, b9 D3 b
  19.             socket.onclose = function(event) {' n3 K# g1 w) J$ _# L
  20.                 alert("Web Socket closed.");
    ( }# I' |) j9 ?. X2 b: U0 M' C
  21.             };+ {4 }$ v7 {( ^  `. E* E2 X
  22.         } else {
    / w9 e4 u2 x! ~
  23.             alert("Your browser does not support Websockets. (Use Chrome)");
    $ R: T5 N' ^" P' y; B
  24.         }
    ' ^3 V: J/ k- T3 p( m

  25. , T" E" p/ I6 }6 h2 q, @. l5 V1 V
  26.         function send(message) {
    6 V# l% N9 `8 T& D3 q) P
  27.             if (!window.WebSocket) {
    . c4 j/ O' I) Y" C
  28.                 return;  {1 H/ w1 c) n, \3 d
  29.             }+ e- h( ]$ e: i# _% _- m9 q6 `6 U
  30.             if (socket.readyState == WebSocket.OPEN) {3 p) c3 u* Q5 a  T- x! o( F6 f4 V
  31.                 socket.send(message);
    7 W1 Z; C$ W& [* Q
  32.             } else {- o: Y2 r" u6 G) w: m% x6 j& T
  33.                 alert("The socket is not open.");$ I9 c! H% Y9 H, o& C
  34.             }  v# n" J$ M* X, I1 g6 q7 e# w
  35.         }
    ' A; ^* f9 r% t- Y2 P% K
  36.     </script>2 l* c+ Y% c) x5 g
  37. </html>
复制代码
4 N! I' ?# {# X) F5 U
/ X1 U$ |2 M' N7 {+ T& e& E6 ?
- }6 l9 a0 C' ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 14:27 , Processed in 0.054190 second(s), 19 queries .

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