【问题标题】:Serve WebSocket and HTTP server at same address on Node.js [closed]在 Node.js 上的同一地址提供 WebSocket 和 HTTP 服务器 [关闭]
【发布时间】:2023-03-16 08:56:01
【问题描述】:

我使用 Node.js 在端口 8888 上设置了 Websocket server。我还有一个与 Websocket 后端(聊天服务器)交互的接口。

当使用浏览器访问服务器时,如何提供 index.html(及其 CSS/JS 文件)?

【问题讨论】:

标签: javascript node.js


【解决方案1】:

这里有一些关于如何设置 websocket 服务器的要点。为此提供一个网络应用程序:

这里也有类似的问题:

【讨论】:

    【解决方案2】:

    如果您不想使用socket.io,而是使用websocket 包,则可以将其与Express 结合使用,如下所示:

    // app.js
    var WebSocketServer = require('websocket').server;
    var express         = require('express');
    var app             = express();
    var server          = app.listen(8888);
    var wsServer        = new WebSocketServer({ httpServer : server });
    
    // this will make Express serve your static files
    app.use(express.static(__dirname + '/public'));
    
    // the rest of your code
    wsServer.on('request', function(r) { ...
    

    express.static 将负责提供您的 HTML/CSS/JS 文件。您传递的参数是这些文件所在的目录(在这种情况下,目录public/ 相对于app.js 所在的位置)。

    【讨论】:

    • 谢谢,完美。我这样做了,它起作用了,但是在我的客户端 js 文件中,我尝试将服务器的 ws:// 地址从公共 IP 更改为 localhost,但它不起作用。这是不可能的,还是我做错了什么?
    • 尝试在您的客户端文件中使用new WebSocket('ws://' + location.host)
    猜你喜欢
    • 2014-01-20
    • 2013-12-18
    • 1970-01-01
    • 2013-06-10
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多