在上一篇《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('服务器已经开启,正在监听中....'); });
评论前必须登录!
注册