【发布时间】:2016-04-14 21:06:47
【问题描述】:
我想创建 node.js TCP 套接字,它接收数据,修改数据,然后将其发送回来。我使用这个答案作为我的例子:https://stackoverflow.com/a/24876432/1945451 它在这样的情况下工作得非常完美,但是在我之后添加我自己的代码来发送数据,它只在第一次工作。
我添加的代码:
conn.on('data', function(data) {
console.log('ECHO_SERVER: CONN: GOT DATA: ' + data);
//ADDED PART STARTS HERE
data = Number(data);
api.requestMatchDetails(data);
api.on("matchDetailsData", function (matchId, matchData) {
var modData = "..." + matchData.match.something + "...";
conn.write(modData);
});
//ADDED PART ENDS HERE
});
添加这部分代码后,TCP 套接字仅第一次开始工作。第一次它按要求工作,但第二次它抛出此错误:
错误:此套接字已被对方结束
并指出这一行:
conn.write(modData);
客户端部分的作用:
1. Opens connection
2. Sends data
3. Waits for response
4. Closes socket.
我希望服务器部分做什么:
1. Wait for connection
2. Accept connection
3. Receive data
4. Modify data
5. Send back data.
6. Close connection
7. Wait for more connections.
服务器部分只需一秒钟即可完成所有操作,因此我可以保证一次连接不会超过 1 个。
提前致谢!
【问题讨论】:
-
仅供参考,能否请您发布完整的服务器代码?
-
@dm03514 我不确定你是否需要它,当我将 TCP 套接字示例添加到我的整个程序中时它运行良好,在我添加了我的问题中提到的这些行后它就停止了工作。从- 添加的部分从这里开始并以 - 添加的部分在这里结束。顺便说一下,我的代码中没有声明使用的方法 requestMatchDetails(data) 和事件处理程序。我正在使用 node-dota2(github.com/RJacksonm1/node-dota2)
标签: javascript node.js sockets tcp server