JavaScriptavaScript之WebSocket

JavaScript之WebSocket

场景引入

在学习web swing过程中,了解到swing客户端嵌入浏览器界面中,是通过WebSocket实现的。WebSocket是何许人也,来小小学习一番。

定义

WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议。
具有一次握手,持久连接,双向数据传输的特点。

优点

转换请求角色:ajax是主动向服务器发送请求,而websocket实现的是服务器有新消息主动返回数据到前端(场景web swing中返回的base64的图片,动态的修改canvas画布内容)。

基本使用

  • 实例化WebSocket
    var Socket = new WebSocket(url, [protocol] );
  • WebSocket事件
事件事件处理程序描述
openSocket.onopen连接建立时触发
messageSocket.onmessage客户端接收服务端数据时触发
errorSocket.onerror通信发生错误时触发
closeSocket.onclose连接关闭时触发
  • WebSocket方法
方法描述
Socket.send()使用连接发送数据
Socket.close()关闭连接

代码示例

<!DOCTYPE html> 
<meta charset="utf-8" /> 
<title>WebSocket Test</title> 
<script language="javascript"type="text/javascript"> 
    var wsUri ="ws://echo.websocket.org/";
     
    function init() {
        output = document.getElementById("output");
        testWebSocket();
    } 
  
    function testWebSocket() {
        websocket = new WebSocket(wsUri);

        websocket.onopen = onOpen;
        websocket.onclose = onClose;
        websocket.onmessage = onMessage;
        websocket.onerror = onError;
    } 
  
    function onOpen(evt) {
        console.log("CONNECTED");
        doSend("WebSocket rocks");
    } 
  
    function onClose(evt) {
        console.log("DISCONNECTED");
    } 
  
    function onMessage(evt) {
        console.log('RESPONSE: '+ evt.data);
    } 
  
    function onError(evt) {
        console.log('ERROR: '+ evt.data)
    } 
  
    function doSend(message) {
        console.log("SENT: " + message); 
        websocket.send(message);
    } 
  
  
    window.addEventListener("load", init, false); 
</script> 
<h2>WebSocket Test</h2> 
</html>

界面效果:
在这里插入图片描述
继续发送消息:
在这里插入图片描述

其他

  • Websocket 使用 ws 或 wss 的统一资源标志符,类似于 HTTPS,其中 wss 表示在 TLS 之上的 Websocke
  • 头部信息
    在这里插入图片描述
    Connection 必须设置 Upgrade,表示客户端希望连接升级。
    Upgrade 字段必须设置 Websocket,表示希望升级到 Websocket 协议。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值