gpt4 book ai didi

node.js - 客户端在连接到 Node js TCP 服务器后立即断开连接

转载 作者:可可西里 更新时间:2023-11-01 02:41:13 25 4
gpt4 key购买 nike

这是我第一次使用 node js。我试图让客户端连接到服务器并保持连接而不关闭。

这一切都托管在 virtualbox 中托管的 ubuntu 服务器版本中。

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

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(),我会得到一个正在断开连接的客户端。我的问题是如何使用此代码建立稳定的连接,我必须更改什么或者我在这里做错了什么?拔掉我的头发 - 提前致谢!

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);

最佳答案

您正在尝试将 WebScoket 客户端与简单的 TCP 服务器一起使用。这是一个不同的协议(protocol)。您需要设置 WebSocket 服务器才能使其正常工作。您可以使用 websocket模块来做到这一点。查看服务器示例代码 here .

关于node.js - 客户端在连接到 Node js TCP 服务器后立即断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15852310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com