【问题标题】:Node.js express does not print anythingNode.js express 不打印任何内容
【发布时间】:2016-02-10 01:36:10
【问题描述】:

所以我将 app.listen 移到顶部,但现在它给了我一个端口正在使用中的错误。我相信这是因为我在这个端口上设置了我的 websocket,但是我该怎么做呢?

var server = require('websocket').server, http = require('http');
var express = require('express');
var app = express();
app.listen(8080);

var socket = new server({
    httpServer: http.createServer().listen(8080)
});


socket.on('request', function(request) {
    var connection = request.accept(null, request.origin);

    app.get('/', function(request, response) {
        var id = request.query.steamid;
        console.log("STEAMID:",id);
        response.send("I have received the ID: " + id);
    });

    connection.on('message', function(message) {
        connection.sendUTF(message);
    });

    connection.on('close', function(connection) {
        console.log('connection closed');
    });
}); 

【问题讨论】:

    标签: javascript node.js express websocket


    【解决方案1】:

    我相信你需要收听connection 而不是request

    socket.on('connection', function(sock) {       
        sock.on('message', function(message) {
            sock.send(message);
        });
    
        sock.on('close', function() {
            console.log('connection closed');
        });
    }); 
    

    【讨论】:

    • 感谢@VickyGonsalves 的回复,我已经稍微编辑了我的主题。
    【解决方案2】:

    将您的app.listen(3000); 放在请求事件之外。 所以,你的快递服务器有机会初始化端口来监听。

    目前它在request event的回调中,一旦web-socket的客户端-服务器连接建立,它就会被调用。

    就网址而言

    ws://localhost:8080/?steamid=123456789
    

    您已将 websocket 配置为侦听端口 8080。但是您的 express 配置为侦听端口 3000。因此无法捕获配置在不同端口上的 express 服务器上的请求,该请求是通过在另一个不同端口上配置的 web-socket 请求的.

    网址应该是这样的。

    http://localhost:3000/?steamid=123456789
    

    因为你的快递服务器使用http protocol and not websocket

    【讨论】:

    • 请看我上面的代码。所以它只解析http中的变量?那么如何在javascript websocket中解析它们呢?
    • U r 对 express 和 websocket 使用相同的端口。请使用不同的
    • 但是如果客户端使用8080端口连接到服务器,并且我将express设置为3000端口,它仍然可以工作吗?
    • 取决于客户端协议和端口
    猜你喜欢
    • 2019-05-26
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 2016-05-02
    相关资源
    最近更新 更多