[英]http.createserver and net.createserver in node.js together
[英]Node net.createServer(), sending data back to the client oustside of on( 'data' ) callback
所以我在 Electron 中有一个小服务器,使用 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.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('data') 中从客户端接收到数据时才向客户端发送响应。 有没有办法以更随意的方式从类外发送数据。 例如:
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 )
(需要检查连接)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.