javascript - Nodejs 后面写的连接套接字如何保存?

标签 javascript node.js sockets networking communication

<分区>

我试图在成功连接后保持一个 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');
}

我没有意识到它是异步的,所以对 sock 的空检查首先发生在 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);

我不确定你还想用套接字做什么,但模式是一样的——你得到一些数据并有条件地调用一些回调。

关于javascript - Nodejs 后面写的连接套接字如何保存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52102757/

相关文章:

java - 棋盘游戏逻辑的持久套接字 (Android)

javascript - 你如何设置 Meteor.userId() 以在自动表单/简单模式中使用?

javascript - Froogaloop 获取事件函数的引用

javascript - while循环javascript的回调方法

node.js - 停止测试运​​行 mocha

node.js - 使用 Node 和 makefile 使用 LESS 编译 Bootstrap

javascript - 结合 JSON 文件与 grunt-contrib-concat

作为独立库的 Javascript 查询选择器 DSL

mysql - 找不到 mysqld.sock : Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory")

r - 与 TCP 套接字(服务器)通信