行使socket.io和node.js搭建websocket应用
websocket是HTML5的一种新的通讯协议,它是实现了赏识器与处事器的双向通信。在 WebSocket API 中,赏识器和处事器只必要要做一个握手的举措,然后,赏识器和处事器之间就形成了一条快速通道。两者之间就直接可以数据相互传送。 在客户端行使websocket必要建设WebSocket工具,通过提供的open、send、message、close等要领实现建设、发送、监听信息、封锁毗连。譬喻下面的代码: if('WebSocket' in window){ // 建设websocket实例 var socket = new WebSocket('ws://localhost:8080'); //打开 socket.onopen = function(event) { // 发送 socket.send('I am the client and I'm listening!'); // 监听 socket.onmessage = function(event) { console.log('Client received a message',event); }; // 封锁监听 socket.onclose = function(event) { console.log('Client notified socket has closed',event); }; // 封锁 //socket.close() }; }else{ alert('本赏识器不支持WebSocket哦~'); } 此刻chrome、firefox等赏识器都已经支持了websocket,而IE却没有。下面我们来简朴说说处事器端对websocket的支持。 处事器端支持websocket的说话不少,并且都有相干的开源项目,譬喻php的phpwebsockets:http://code.google.com/p/phpwebsockets/,java的jWebsocket:http://jwebsocket.org/。 socket.IO是一个websocket库,包罗了客户端的js和处事器端的nodejs。官方地点:http://socket.io 客户端行使socket.io去github clone socket.io的最新版本,可能直接饮用行使socket.io的CDN处事: <script src="http://cdn.socket.io/stable/socket.io.js"></script> 下面可以建设行使socket.io库来建设客户端js代码了: var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); socket.on是监听,收随处事器端发来的news的内容,则运行function,个中data就是哀求返来的数据,socket.emit是发送动静给处事器端的要领。 行使socket.io和nodejs搭建websocket处事器端socket.io不只可以搭建客户端的websocket处事,并且支持nodejs处事器端的websocket。 nodejs安装socket.io行使node插件打点包,运行下面的呼吁就可以安装乐成socket.io
没有npm的可能windows用户可以行使github下载socket.io而且放入到node_modules文件夹中,详细设置可以参考文章:《nodejs教程:设置nodejs.exe的windows目次布局》 nodejs成立socket.io处事通过nodejs的http模块就可以利便的搭建websocket处事器情形,譬喻下面的代码: // 引入必要的模块:http和socket.io var http = require('http'), io = require('socket.io'); //建设server var server = http.createServer(function(req, res){ // Send HTML headers and message res.writeHead(200,{ 'Content-Type': 'text/html' }); res.end('<h1>Hello Socket Lover!</h1>'); }); //端口8000 server.listen(8080); //建设socket var socket = io.listen(server); //添加毗连监听 socket.on('connection', function(client){ //毗连乐成则执行下面的监听 client.on('message',function(event){ console.log('Received message from client!',event); }); //断开毗连callback client.on('disconnect',function(){ console.log('Server has disconnected'); }); });
行使express和socket.io前篇文章我提到了nodejs的web框架:express,下面的代码就可以建设一个基于express和socket.io的socket应用: var app = require('express').createServer(), io = require('socket.io').listen(app); app.listen(80); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.sockets.on('connection', function (socket) { //发送动静给客户端 socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); //广播信息给除当前用户之外的用户 socket.broadcast.emit('user connected'); //广播给全体客户端 io.sockets.emit('all users'); }); 和客户端的要领一样,socket.io的监听都是行使on要领,发送行使emit要领。其它提供了广播成果:broadcast 写在最后最近写文章较量勤,首要是怕本身十一放假返来头绪就乱了,以是在十一之前清算出来最近胡乱进修nodejs的一些心得领会,海内的nodejs资料太少了,进修本钱挺高的。 下篇文章也许要写在express和socket.io中实现session认证。由于上面的谈天室用到了session判定用户是否登录。其它本身写了个nodejs的斗田主,然则逻辑相等的伟大,于是代码也就越写越烂,写到最后测试逻辑就开始夹杂,有空还要清算下才气放出来哦~省的拿出去丢人。羞愧啊~ 来历:http://www.js8.in/784.html (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |