node.js与websocket入门

来源:互联网 发布:se网络验证 编辑:程序博客网 时间:2024/05/16 07:33

因为涉及到要读pomelo框架的rpc部分,所以要搞懂node.js到底是怎么用websocket的,刚开始居然还掉到了坑里面,郁闷。。。只能说websocket的用法太奇特了。。。

首先我们来看服务器端的使用方法:

var sio = require('socket.io');var  wsocket = sio.listen(80, {  //用于监听配置的端口transports: [  'flashsocket', 'websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']});wsocket.sockets.on('connection', function (socket) {  //当有新的连接建立的时候console.log("come in");socket.emit('news', { hello: 'world' });  socket.on('my other event', function (data) {    console.log(data);  });});
其实这部分与tcp的socket用法都很像了吧,无非就是调用一下listen函数,然后这里设置了当有connection建立的时候,进行处理的函数。。。

那么接下来来看看客户端部分的代码:

var sioClient = require('socket.io-client');var socket = sioClient.connect("127.0.0.1" + ':' + 80, {'force new connection': true, 'reconnect': false});socket.emit("my other event", "aaaaaa")socket.on("news", function(data){    console.log(data);});
这里看起来也很简单吧,无非是调用一下connect函数用于连接服务器。。


这里来说说我掉进去的那个坑吧:

socket.emit("my other event", "aaaaaa")
看上述的代码,这是客户端部分的,这里调用的是emit方法,这里一般会认为是用于激活当前socket上面的my other event事件,汗。。。其实不是的。。。

它的真实用途是向服务器端发送数据“aaaaaa”,并激活服务器端的my other event事件函数,用于处理发送过来的数据。。。

我勒个去。。居然是这个样子的。。用emit来发送数据。。。汗啊。。。


这里用于接收数据就是直接设置on事件就好了。。那么只要收到对应的数据,就可以处理了。。


好了,其实websocket其实还是很好用的,起码比直接用socket要好的多了,省去了很多数据的解码,读取的过程。。。