美文网首页
websocket

websocket

作者: 嘬烟盒的程序员 | 来源:发表于2016-12-08 20:41 被阅读0次

    首先说websocket是双向通信,主要用在做 直播的网站了,各种的数据交互等等;
    而ajax是单向通信。
    优点
    较少的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部相对较小。在不包含扩展的情况下,对于服务器到客户端的内容,此头部大小只有2至10字节(和数据包长度有关);对于客户端到服务器的内容,此头部还需要加上额外的4字节的掩码。相对于HTTP请求每次都要携带完整的头部,此项开销显著减少了。

    更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。相对于HTTP请求需要等待客户端发起请求服务端才能响应,延迟明显更少;即使是和Comet等类似的长轮询比较,其也能在短时间内更多次地传递数据。
    保持连接状态。于HTTP不同的是,Websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。

    更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。

    可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。

    更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。

    WebSocket 是独立的、创建在 TCP 上的协议。·
    Websocket 通过 HTTP/1.1 协议的101状态码进行握手。
    为了创建Websocket连接,需要通过浏览器发出请求,之后服务器进行回应,这个过程通常称为“握手”(handshaking)。
    来源:前端开发博客
    先说 node.js中都是有哪些模块呢?
    http
    fs
    mysql
    那么websocket是socket.io;
    在node.js中 我们都有学到emit是发射数据,on是接收数据。
    那么咱们就按着这样的套路写一下websocket来完成双向 通信。
    再来说一下所在 的问题:
    1.node服务器
    2.端口
    3.包 找不到
    安装
    重启
    4.是在git bash
    linux命令
    官网:https://git-scm.com/
    5.ws: //->http:// 内定的模块。不用问为什么,就得这么写。
    现在我们要说一下具体的操作:
    第一步
    新建一个项目目录,在文件夹里右击-git Bash Here; 出现小黑框;
    第二步
    安装 npm install socket.io
    输入-----node 文件名.js
    第三步
    在浏览器里输入对应的服务器名和端口号+文件名.html
    那么咱们话不多说,下面是 我 做的一个 小例子,想实现的效果就是让服务器每一秒给我返回一个时间戳,仅供参考:
    js文件:

    var http= require('http');
    var fs=require('fs');
    var io=require('socket.io');
    var httpObj=http.createServer(function(req,res){
      fs.readFile('www'+req.url,function(err,data){
       if(!err){
            res.write(data);
            res.end();
       }else{
            res.write('404');
            res.end();
       }
      });
    });
    httpObj.listen('9090');
    var ws=io.listen(httpObj);
    ws.on('connection',function(socket){
        //发送数据
        setInterval(function(){
            socket.emit('time',Date.now());
        },1000);
       socket.on('khd',function(name,value){
           console.log(name,value);
       });
    });//有人链接我,双方建立链接
    

    html文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    </style>
    <script src="/socket.io/socket.io.js"></script>
    <script>
    var ws=io.connect('ws://localhost:9090');
    ws.on('time',function(result){
    console.log(result);
    });
    ws.emit('khd','name','出来')
    </script>
    </head>
    <body>
    <p>我是不是你最疼爱的人</p>
    </body>
    </html>
    

    那么文件的怎么摆放呢;现在就告诉大家


    websocket文件摆放.png

    相关文章

      网友评论

          本文标题:websocket

          本文链接:https://www.haomeiwen.com/subject/jmxdmttx.html