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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

- I6 E$ q, r. P9 S. h

与http://这一URL 前缀等价的WebSocket 前缀 是 ws:// ,安全 WebSocket 则有一个与http://等价的 wss:// 前缀。 + S) b" I1 n8 w" y: \/ H

) u' F, q3 t6 B0 n1 n! m4 _
* {0 _* Y0 N- L/ g, B; X/ s该套接口对象有四个用来监听套接口事件的回调:

  1.     socket.onopen = function(){        //打开( U. }% x1 f6 m' G5 U1 k! U
  2.     }' V! s3 I. {4 J4 Q; Q0 S4 W

  3. : D( A: _6 i! W- Y  c' ^, i( m
  4.     socket.onmessage = function(){' L& m& q" p5 P' A
  5.         //在event.data消息数据; y7 L0 r6 n. K+ U
  6.     }
    . a1 s. u' B- M8 V0 C

  7. - X9 X& @; \$ [% c2 w- h
  8.     socket.onclose = function(){
    8 c3 e  @. G/ Q+ n
  9.         //关闭WebSocket' x" ?4 U% h( @. n7 B; W4 c* W# d
  10.     }
    $ f+ j# J  n4 O# ~: V% W7 V
  11. / s) t- @0 a% g+ a5 O- v) I
  12.     socket.onerror = function(){  J( ~7 k- [; f4 s
  13.         //错误触发& c3 @* C0 T! c! f+ q- l% Q' X
  14.     }
复制代码
8 o% W* U) Z, r! K1 ?, s% L

0 Q7 G* Q7 G* i' p, m* R( ?

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

  1.     socket.send(message)
复制代码
$ I8 ?" r% x  \3 N( n6 f

' g7 f, r. ]4 @( x' j: D  g$ B$ B0 A5 ?$ x5 f

代码附上:

  1. <!DOCTYPE html><html>) e. `" Y% X( B
  2.     <head>7 H, t5 y( p; |/ `( s2 g' R
  3.         <meta charset="UTF-8">% v# n, ?" ?: K, t% X3 Z
  4.         <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">( @( i! C$ l( ?
  5.         <title>WebSocket</title>
    " e! r  O" x& w8 V, R2 s
  6.     </head>0 C! S- x0 f4 z; J7 s; Y
  7.     <body>
    : S5 v7 O: W+ Z8 P* N, O7 {
  8.     </body>+ M0 Q4 O; l* G  S7 E) [
  9.     <script>
    % K. [- z7 u! s3 E& c4 ^/ s
  10.         var socket;
    7 o7 b/ I, Z& y3 Z
  11.         if (window.WebSocket) {5 f8 n; L: I1 v* k7 [6 h% R! A
  12.             socket = new WebSocket("ws://localhost:8080/myapp");' [0 R% c; Z; A" V! ^4 f9 j
  13.             socket.onmessage = function(event) {; k1 u1 C( Q( Y! f% m1 I: z
  14.                 alert("Received data from websocket: " + event.data);
    ' ^6 i; D" t% _  j. c
  15.             }, Z3 r& V4 z# w+ f& s
  16.             socket.onopen = function(event) {
    ; E# T6 X& F' D' d0 r2 \! s
  17.                 alert("Web Socket opened!");
    - T1 H3 n4 }. K0 B' d0 [
  18.             };
    - G$ t: p- J9 @  |4 L1 X* Y
  19.             socket.onclose = function(event) {/ s9 u, k0 S/ ]( c  K& N8 _) f8 P2 q4 U
  20.                 alert("Web Socket closed.");% {( o( c& \( q6 s
  21.             };1 T5 E* K$ j0 e$ r
  22.         } else {
    : i& h4 U3 ~! z9 S3 K: j
  23.             alert("Your browser does not support Websockets. (Use Chrome)");+ i: ]1 h* l) N. `! b
  24.         }
    : D) e, Z7 f( S/ q3 y+ y
  25. ' q  B( A/ N, z; w  {
  26.         function send(message) {+ L; d" u3 s! W9 Q1 ~
  27.             if (!window.WebSocket) {, G4 D" t  c& z6 z7 T2 q. [
  28.                 return;
    % w) B% n  g) Z* T4 i. s
  29.             }  h6 O2 ^0 l8 s$ r% ?7 E
  30.             if (socket.readyState == WebSocket.OPEN) {
    & F" g7 P3 z5 H! v8 }, m- \+ @' {- i
  31.                 socket.send(message);
    + F5 ^& ~% N$ Q9 w1 W
  32.             } else {7 r( ~" l  P2 ]8 `: h# d! R
  33.                 alert("The socket is not open.");
    9 _% m& q3 Q; G/ ]( Q6 z9 \
  34.             }6 j. Z3 P# _9 Y
  35.         }
    - F# ]# s- ^# Q
  36.     </script>
    6 `7 a9 g1 l) l1 l
  37. </html>
复制代码
! @5 \7 U6 w0 n5 v% A# [9 _

+ X9 D* l# t0 S% O  W3 v& P
! M0 z$ z1 m7 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 13:17 , Processed in 0.050413 second(s), 20 queries .

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