zoukankan      html  css  js  c++  java
  • WebSocket技术

    webSocket技术

    在html5技术革新中,加入了WebSocket技术
    1.webSocket实际是TCP连接
    webSocket在最初将发送http连接请求到服务器端,
    但是在header中加入了附加信息,
    这些附加信息会在服务器端接收到并解析,
    使得服务器端知道需要把这一个http连接升级到WebSocket的连接,
    服务器随后将响应返回给客户端,     这样WebSocket连接就建立了。
    2.在发送数据的时候,数据包的开头以0x00开始,以0xFF结束,
    用以区分每次发送数据包
    3.其他:webSocket客户端由js编写,服务端可以使用各种语言,需要遵循webSocket的规范,实现能够支持webSocket的应用服务器端
    

    在webSocket之前的轮询技术

    1.这种模式在接触webSocket的期间,自己就想到了,如果使用ajax异步请求,可以让服务器不响应ajax,当需要给客户端发信息的时候再响应,这样客户端接收信息后,再请求,这期间服务器如果有信息要发给客户端的话,先缓存,等客户端在发请求的时候,再一起响应。这样循环询问,当有信息就响应,无信息就等待。
    2.Iframe 隐藏标签,标签的src指向是服务器servlet,每次触发时间到servlet时,servlet就会把响应数据写入Iframe的隐藏标签,响应的数据的形式是JS可执行代码,这样就会自动执行,以达到传输数据的目的;
    缺点是,不知道连接状态;而且Iframe已经过时
    

    socket.io

    代码地址:https://github.com/socketio/socket.io/
    
    实现了传统的轮询机制,包括服务端:
    a.Adobe® Flash® Socket
    b.AJAX long polling
    c.AJAX multipart streaming
    d.Forever Iframe
    f.JSONP Polling
    
    实现了webSocket,包括服务器的实现,可以使用node.js搭建
    创建服务器的代码示例:
    var server = require('http').createServer();
    var io = require('socket.io')(server);
    io.on('connection', function(socket){
    socket.on('event', function(data){});
    socket.on('disconnect', function(){});
    });
    server.listen(3000);
  • 相关阅读:
    【idea】批量修改文件的换行类型
    【shell】for循环执行sql语句
    【gitlab】创建token供外部git clone
    【idea】修改git源
    【浏览器】 NET::ERR_CERT_INVALID
    mac os 11 Big Sur 根目录无法写入解决办法
    dbeaver把表数据导出csv时字符串自动加双引号问题解决
    spring boot2 jpa分页查询百万级数据内存泄漏
    win10安装MAT并单独配置jdk11
    Transaction silently rolled back because it has been marked as rollback-only
  • 原文地址:https://www.cnblogs.com/gavinsp/p/5729834.html
Copyright © 2011-2022 走看看