无法开始使用NodeJS和SocketIO

时间:2014-12-10 10:13:32

标签: javascript node.js sockets socket.io

我正在尝试使用socket.ionode.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调用会被重复调用几次,就像它仍在尝试在失败后发送数据或其他东西一样?只是一个假设。

1 个答案:

答案 0 :(得分:1)

您应该在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

即使代码很脏,我相信你可以从中获得很多有用的例子