nodejs

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

智言 2016年04月23日 阅读(5388) 0

在上一篇《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('服务器已经开启,正在监听中....');
});
分享到

智言

业务开发请联系QQ:5679361

评论 抢沙发

评论前必须登录!

 


如果你觉得本站内容对你有所帮助,比如提升你对编程方面的认识,你可以通过上面的二维码请博主喝杯咖啡,安好。

WEB前端开发部落(公众号:webapp_club)

群列表

前端初级学习群:初级Web前端学习群(后期为支付入群)
PHP初级学习群:PHP(MySQL)学习交流群
QQ群仅作为相关领域讨论平台,均提供高质量问题交流,禁止闲聊,无法接受的朋友请勿加群!
进群需要通过这里获取进群码才能进群哦!

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

支付宝扫一扫打赏

微信扫一扫打赏