我想創建node.js TCP套接字,接收數據,修改數據,然後將其發回。我用這個答案作爲我的例子:https://stackoverflow.com/a/24876432/1945451它就是這樣完美的工作,但是當我添加自己的代碼發送數據後,它只能在第一次使用。node.js TCP套接字接收數據併發送修改後的數據只有第一次工作
我添加的代碼:
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套接字開始只在第time.The第一次工作通緝工作這一部分之後,但在第二次它拋出這個錯誤:
錯誤:此插座已經被對方
結束,並指出這條線:
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
@ dm03514 我不確定你是否需要它,當我將TCP套接字示例添加到我的整個程序中時,它工作正常,它只是在我添加了我的問題中提到的這些行後停止工作。開始 - 添加部分從此處開始,以 - ADDED PART ENDS HERE結尾。通過使用方法requestMatchDetails(data)和事件處理程序的方式未在我的代碼中聲明。我正在使用node-dota2(https://github.com/RJacksonm1/node-dota2) – ESipalis