gpt4 book ai didi

javascript - NodeJS 和 SocketIO 入门遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:54 25 4
gpt4 key购买 nike

我正在尝试使用 socket.io 获得基本结构和 node.js同时使用('net')创建服务器来实现node.js主页上显示的tcp功能。

由于代码不多,这就是我目前所拥有的

服务器:

// Setup the server
var tcpProtocol = require('net');
var serverListener = tcpProtocol.createServer(tcpHandler);
var socketIO = require('socket.io').listen(serverListener);

function tcpHandler(socket) {
console.log("TCP Handler received a call.");
socket.pipe(socket);
}

socketIO.sockets.on('connection', function(socket) {
console.log("Connection maid.");
});

socketIO.sockets.on('login', function(username, password) {
console.log("login called.");
console.log('username: ' + username);
console.log('password: ' + password);
});


serverListener.listen(5055, '127.0.0.1');

console.log("Server started on port 5055");

然后,当然是客户:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Test Client</title>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.2.1.js"></script>
</head>
<body>
<script>
var socket = io.connect('http://localhost:5055');
$(function() {
socket.emit('login', 'Chris', 'PassBob');
console.log("sent");
});
</script>
</body>
</html>

服务器正在打印 tcpHandler 的调用,但是 socketIO 调用没有得到任何识别。从客户端发送的 sent 被打印出来,但是我注意到 tcpHandler 调用被重复调用几次,就像它在失败后仍在尝试发送数据一样?只是一个假设。

最佳答案

您应该在 connection 事件中处理套接字逻辑。

您的代码应如下所示:

服务器

socketIO.sockets.on('connection', function(socket) {
console.log("Connection maid.");

socket.on('login', function(username, password) {
console.log("login called.");
console.log('username: ' + username);
console.log('password: ' + password);
});
});

你可以引用这个开源项目 - 它里面有很多套接字逻辑(突出显示)

https://github.com/thecatontheflat/agile-estimation/blob/0.0.3/server.js#L94-L196

尽管代码很脏,但我相信您可以从中获得很多有用的示例

关于javascript - NodeJS 和 SocketIO 入门遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27398304/

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