这个问题在这里已有答案:
我试图在成功连接后保持tcp套接字打开,这样我以后可以通过它写一些东西。这是我尝试这样做的:
var sock = null;
var server = require('net').createServer( function (socket) {
sock = socket;
socket.on('data', function (data) {
console.log(data.toString());
});
});
server.listen(10005);
if (sock != null) {
sock.write('command', 'utf-8');
else {
console.log('sock is null');
}
我没有意识到它是异步的,因此对袜子的空检查首先发生在connectionCallback之前。我来自C ++背景,所以这就是我接受过编程思考的方式。在javascript中执行此操作的正确方法是什么?
我希望用户能够通过连接套接字写入数据。我想重用那个成功连接写入的相同套接字。
谢谢。
不是将socket
存储在变量中,而是编写一个函数来处理在创建套接字时将被调用的写入。像这样的东西:
function handleSocket(socket) {
socket.write('command', 'utf-8')
}
var server = require('net').createServer(function (socket) {
socket.on('data', function (data) {
console.log(data.toString());
});
handleSocket(socket);
});
server.listen(10005);
我不确定你还想用套接字做什么,但模式是一样的 - 你得到一些数据并有条件地调用一些回调。