个人博客
专注IT梦想的地方

Node.js之实现套接字服务(二)

在上一篇《Node.js之实现套接字服务(一)》中分享了关于node.js在套接字中如何创建一个套接字的客户端,而今天这篇文章分享的是如何创建一个套接字服务端。

首先,对于我们打开了一个客户端,需要与服务器进行通信,都是需要服务器在开启的状态下有所相应才行,否则两个完全见不着面的人如何交流?

所以,我们在客户端中使用同样使用net模块来进行创建socket对象进行操作,在node.js中不区分服务端和客户端的socket对象,都是一个对象,然后通过duplex流来进行读取和写入的,那么在服务端通过下面的代码来创建socket对象:

net.createServer([options], [connectionListenner])

options参数是一个对象,它指定创建套接字Server对象时要使用的选项。选项如下:

allowHalfOpen:一个布尔值,如果为true,则表示当套接字的另一端发送一个FIN数据包时,该套接字将不会自动发送一个FIN数据包,从而使一般的Duplex流保持开放。默认为false

connectionListenner第二个参数是connection事件的回调函数,它在接收到连接时被执行。connectionListenner回调函数被传递给用于连接中的客户端的Socket对象。

 

在Socket对象中触发的事件如下:

listening:当服务器调用listen()方法在一个端口上开始监听时发出。回调函数不接受任何参数

connection:当连接从套接字的客户端受到时发出。回调函数必须接受一个参数,它是一个Socket对象,表示到连接中的客户端的连接。例如:function(client){ }

close:当服务器正常关闭或者由于出错而关闭时发出。除非所有的客户端连接都已经结束,否则该事件不发出

error:当发生错误时发出。出错也出发close事件

 

下面来个简单的案例

var net = require('net'),

var SocketServerCilent = net.createServer(function(client) {
   client.write('[服务器加密测试数据开始发送]');
   client.on('data', function(data) {
       console.log('客户端发送的数据为' + data.toString());
   });
   client.on('end', function() {
       console.log('客户端关闭');
   });
   client.on('error', function() {
       console.log('客户端发生错误!!!');
   });
   client.on('close', function() {
       console.log('服务器正在关闭....');
       console.log('已关闭....');
   });

});
SocketServerCilent.listen(8107, function() {
    console.log('服务器已经开启,正在监听中....');
});
赞(155) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » Node.js之实现套接字服务(二)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏