【问题标题】:How to create a TCP server using Sails.js?如何使用 Sails.js 创建 TCP 服务器?
【发布时间】:2015-02-05 18:38:51
【问题描述】:

所以我使用Sails.js,当我运行sails lift 时,它可以正常为网站提供服务。但是,如何创建一个在我 sails lift 时也运行的 TCP 服务器,并不断侦听来自客户端的原始 TCP 消息?我为 Node.js 找到了这个简单的 TCP 服务器示例(显然适用于 Sails):

var net = require('net');

var server = net.createServer(function(socket) {
    socket.write('Echo server\r\n');
    socket.pipe(socket);
});

server.listen(1337, '127.0.0.1');

如何将其集成到 Sails 中?我是否需要修改app.js 文件(我认为这是在输入sails lift 时运行的文件)?有什么想法吗?

【问题讨论】:

  • 使用socket.io模块。
  • 我以前尝试过,但不幸的是它没有达到我想要的效果。我正在尝试与发送和接收原始 TCP 消息的设备交互,socket.io 不这样做。但是,我已经成功使用 Node.js net 模块作为客户端,所以我知道 net 模块的服务器端可以工作,只是不确定如何将它集成到运行的 Sails.js 服务器中在sails lift.
  • 你应该试试socket.io v0.9。我已经为使用它的设备构建了许多应用程序。
  • 如果我要试一试socket.io,我会将 TCP 服务器代码放在哪里,以便在我运行 sails lift 时它运行此服务器?
  • 参考this

标签: javascript node.js sockets tcp sails.js


【解决方案1】:

我参加聚会有点晚了,但最近我有同样的要求并想出了以下代码:

let net = require('net');

net.createServer(function (socket) {
    socket.on('data', function (data) {
        const req = {
            url: '/controllername/method',
            method: 'get'
        };

        const res = {
            _clientCallback: function _clientCallback(clientRes) {
                // TODO: do something useful with clientRes
                message = clientRes.body;
                if (clientRes.body && clientRes.body.message) {
                    message = clientRes.body.message;
                }
                process.stdout.write(message);
            }
        }

        sails.router.route(req, res);
    });
}).listen(1338);

也看看sails-hook-sockets这个项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2020-01-26
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多