Javascript 节点net.createServer(),将数据发送回(';数据';)回调的客户端
因此,我有一个电子版的小服务器,使用net和这个类:Javascript 节点net.createServer(),将数据发送回(';数据';)回调的客户端,javascript,server,Javascript,Server,因此,我有一个电子版的小服务器,使用net和这个类: var net = require('net') class Server { constructor(port) { this.Port = port var HOST = '127.0.0.1' // todo: get ip from host name this.Server = net.createServer(); this.Server.list
var net = require('net')
class Server {
constructor(port) {
this.Port = port
var HOST = '127.0.0.1' // todo: get ip from host name
this.Server = net.createServer();
this.Server.listen(port, HOST);
this.Server.on('connection', (sock) => {
console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort);
sock.on('data', function (data) {
console.log( `client sent data ${data}`)
sock.write( `Server sends back ${data} to client`)
});
sock.on('close', function (data) {
let index = sockets.findIndex(function (o) {
return o.remoteAddress === sock.remoteAddress && o.remotePort === sock.remotePort;
})
console.log('CLOSED: ' + sock.remoteAddress + ' ' + sock.remotePort);
});
});
} // constructor
}
我这样称呼它:
var server = new Server( 3000 )
使用telnet localhost 3000测试它。这一切都很好用,但它有点像是一个问答游戏,只有当客户端收到io中的数据(“数据”)时才会向客户端发送响应。是否有任何方法可以以更随意的方式从类外发送数据。例如:
var server = new Server( 3000 )
this.Server.write( data )
这似乎有效:
在构造函数的this.Server.on('connection')中:
this.Socket = sock
添加方法:
Send( msg ) {
if ( !this.Socket ) {
console.log( "Server.Send(): no client connected" )
}
this.Socket.write( msg )
}
在sock.on('close')中,将套接字方法设置回null:
this.Socket = null
然后:
(需要检查连接)
var server = new Server( 3000 )
server.Send( data )