微信扫码签到实现弹幕上屏
三、带Socket.IO的WebSocket
Socket.IO是Guillermo Rauch创建的WebSocket API,Guillermo Rauch是LearnBoost公司的首席技术官以及LearnBoost实验室的首席科学家。Socket.IO使用检测功能来判断是否建立WebSocket连接,或者是AJAX long-polling连接,或Flash等。可快速创建实时的应用程序。Socket.IO还提供了一个NodeJS API,它看起来非常像客户端API。建立客户端Socket.IO
Socket.IO可以从GitHub下载,可以把socket.io.js文件包含到页面中:
[
[/code
此时,Socket.IO在此页面上是有效的,是时候创建Socket了:
[
// 添加一个连接监听器socket.on('connect',function() { console.log('Client has connected to the server!'); });
// 添加一个连接监听器socket.on('message',function(data) { console.log('Received a message from the server!',data); });
// 添加一个关闭连接的监听器socket.on('disconnect',function() { console.log('The client has disconnected!'); });
// 通过Socket发送一条消息到服务器function sendMessageToServer(message) { socket.send(message); }
Socket.IO简化了WebSocket API,统一了返回运输的API。传输包括:WebSocketFlash SocketAJAX long-pollingAJAX multipart streamingIFrameJSONP polling
你还可以设置任意的Socket.IO构造器的第二个选项,选项包括:
port - 待连接的端口transports - 一个数组,包含不同的传输类型transportOptions - 传输的参数使用的对象,带附加属性
Socket.IO还提供了由本地WebSocket API提供的普通连接、断开连接、消息事件。Socket还提供了封装每个事件类型的方法。
四、NodeJS和Socket.IO联合开发
Socket.IO提供的服务器端解决方案,允许统一的客户端和服务器端的API。使用Node,你可以创建一个典型的HTTP服务器,然后把服务器的实例传递到Socket.IO。从这里,你创建连接、断开连接、建立消息监听器,跟在客户端一样。
一个简单的服务器端脚本看起来如下:
[
// 在8080端口启动服务器var server= http.createServer(function(req, res){ // 发送HTML的headers和message res.writeHead(200,{ 'Content-Type': 'text/html' }); res.end('
Hello Socket Lover!
'); }); server.listen(8080);
// 创建一个Socket.IO实例,把它传递给服务器var socket= io.listen(server);
// 添加一个连接监听器socket.on('connection', function);
你可以运行服务器部分,假定已安装了NodeJS,从命令行执行:
[
现在客户端和服务器都能来回推送消息了!在NodeJS脚本内,可以使用简单的JavaScript创建一个定期消息发送器:
[
服务器端将会每5秒推送消息到客户端!
五、dojox.Socket和Socket.IO
Persevere的创建者Kris Zyp创建了dojox.Socket。dojox.Socket以Dojo库一致的方式封装了WebSocket API,用于在客户端不支持WebSocket时,使用long-polling替代。
下面是怎样在客户端使用dojox.Socket和在服务器端使用Socket.IO的例子:
[
dojox.socket.Reconnect还创建了在套接字失去连接时自动重连。期待包含dojox.Socket的Dojo 1.6版本早日发布。
六、实际应用和WebSocket资源
WebSocket对于大多数客户机-服务器的异步通信是理想的,在浏览器内实时聊天互动是最突出的应用。现场互动系统使用最新的WebSocket技术,来处理用户签到,实时消息和图片发送,投票,抽奖等消息,会带给用户最快最高效的极致体验。