socket.io

什么是socket.io

Socket.IO 是一个面向实时 web 应用的JavaScript库。它使得服务器和客户端之间实时双向的通讯成为可能。他有两个部分:在浏览器中运行的客户端库,和一个面向Node.js的服务端库。二者有着几乎同样的API。像Node.js同样,它也是事件驱动的.web

Socket.IO 主要使用WebSocket协议。可是若是须要的话,Socket.io能够回退到几种其它方法,例如Adobe Flash Sockets,JSONP拉取,或是传统的AJAX拉取,而且在同时提供彻底相同的接口。尽管它能够被用做WebSocket的包装库,它仍是提供了许多其它功能,好比广播至多个套接字,存储与不一样客户有关的数据,和异步IO操做。redis

Socket.io并非一个基本的、独立的、可以回退到其它实时协议的WebSocket库,它其实是一个依赖于其它实时传输协议的自定义实时传输协议的实现。该协议的协商部分使得支持标准WebSocket的客户端不能直接链接到Socket.io服务器,而且支持Socket.io的客户端也不能与非Socket.io框架的WebSocket或Comet服务器通讯。于是,Socket.io要求客户端与服务器端均须使用该框架浏览器

WebSocket使得客户端和服务器之间的数据交换变得更加简单,容许服务端主动向客户端推送数据.在WebSocketAPI中,浏览器和服务器只须要完成一次握手,二者之间就直接能够创建持久性的链接,并进行双向数据传输。bash

由于http/1.0 没有alive状态 只有http/1.1支持websocket服务器

如今,不少网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,而后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器须要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费不少的带宽等资源。websocket

怎样在setInterval中添加socketapp

首先,建立socket框架

var socketIO = require('socket.io');
var http = require('http');
var app = http.createServer(handler).listen(8080);
function handler (req, res) {
    //pass
}
var io = socketIO.listen(app);
//设置一个定时器
setTimeout(function(){
    //向固定的用户发送消息  socket.id 可使用redis与用户主键作关联
    io.sockets.connected['socket.id'].emit("event", data);
    // If you using Socket.io < 1.0, you need to use io.sockets.socket instead

}, 5000);


io.sockets.on('connection', function(socket) {
    socket.on........
    socket.emit.......
})

复制代码
相关文章
相关标签/搜索