连接到Node js TCP服务器后,客户端立即断开连接

这是我第一次使用节点js。 我试图让客户端连接到服务器,并保持连接而不closures。

这些都是在虚拟机中托pipe的Ubuntu服务器版本中托pipe的。

我已经使用netstat -ant检查了服务器实际上是在监听端口5000

Websockets也可以在我的浏览器上使用。

我得到以下输出错误

Echo server dot come 192.168.1.107 node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: EPIPE, Broken pipe at Socket._writeImpl (net.js:159:14) at Socket._writeOut (net.js:450:25) at Socket.write (net.js:377:17) at Socket.ondata (stream.js:36:26) at Socket.emit (events.js:81:20) at Socket._onReadable (net.js:678:14) at IOWatcher.onReadable [as callback] (net.js:177:10) 

如果我在连接事件处理程序的服务器上调用socket.end()我得到一个断开连接的客户端。 我的问题是如何build立一个稳定的连接使用这个代码,我有什么改变或者我在这里做错了? 拉我的头发 – 提前感谢!

HTML代码

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Test RS Server (built over nodejs)</title> <link rel="stylesheet" href="style.css"></link> <script src="jquery.min.js" ></script> <script src="client.js" ></script> </head> <body> <label>Message</label> <input type="text" id="message_box"></input> <input type="button" id="submit_btn" value="Send"></input> <div style="clear:both;"/> <label>Output</label> <textarea rows="10" cols="100" id="output_box"></textarea> </body> </html> 

客户JS

 var message_box; var output_box; var submit_btn; var url = "wss://192.168.1.107:5000"; var socket; function createListeners() { if ("WebSocket" in window) { output_box.html("Supports sockets."); socket= new WebSocket(url); socket.onopen= function() { socket.send("con opened"); output_box.html("Connection opened."); }; socket.onmessage= function(response) { // alert('got reply '+s); console.log(response); output_box.html(response); }; socket.onclose = function() { // websocket is closed. output_box.html("Connection is closed..."); }; submit_btn.click(function(e) { socket.send(message_box.val()); }); } else { output_box.html("doesnt support sockets"); }; }; $(document).ready(function() { message_box = $("#message_box"); output_box = $("#output_box"); submit_btn = $("#submit_btn"); createListeners(); }); 

服务器JS代码

 var net = require('net'); var server = net.createServer(function (socket) { socket.write('server says this\r\n'); socket.pipe(socket); }); server.on('connection', function(socket) { socket.write("Echo server dot come\r\n"+socket.address().address); console.log("Echo server dot come\r\n"+socket.address().address); // socket.end(); socket.pipe(socket); }); server.listen(5000); 

您正尝试使用简单的TCP服务器来使用WebScoket客户端。 这是一个不同的协议。 你需要设置WebSocket服务器来使其工作。 你可以使用websocket模块来做到这一点。 看看这里的服务器示例代码。