当前位置: 首页 > 知识库问答 >
问题:

Heroku上带Node.js的Socket.io

麻昌翰
2023-03-14

我用Node.js设置了Socket.io,它通过侦听/连接到端口8000(或另一个不是服务器运行端口的端口)在本地开发机器上工作。

当我试图在heroku上做同样的事情时,客户端脚本导入失败了。

我尝试过相对路径

<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
         var href = document.location.protocol + document.location.hostname + ':8000/socket.io/socket.io.js';
         console.log("href = " + href);
         document.write("<script src=" + href + "><\/script>");
     </script>
var port = process.env.PORT || 8000; //I've tried hardcoding to 8000 and using process.env.PORT and then I used the relative path for the script import
io = require('socket.io').listen(port);
//Configue io to work with heroku
io.configure(function () { 
    io.set("transports", ["xhr-polling"]); 
    io.set("polling duration", 10); 
});
GET http://<myAppName>.herokuapp.com/socket.io/socket.io.js 404 (Not Found) 

编辑:我实际上是在使用geddy mvc框架,我想让它在heroku上如何设置(基本上就像socket.io一样),我发现这个答案让我看起来可以类似地使用它:GeddyJS&socket.io:从服务器端捕捉和发射事件

共有1个答案

阮飞翔
2023-03-14

啊哈!我忘了在配置中打开Geddy的实时设置。

以下是我所做的:

增加的

, socketIo: true
, realtime: true
geddy.io.configure(function () { 
    geddy.io.set("transports", ["xhr-polling"]); 
    geddy.io.set("polling duration", 10); 
});
var href = document.location.protocol + document.location.hostname;
console.log('href = ' + href);
var socket = io.connect(href);
 类似资料:
  • 在Heroku上部署我的应用程序破坏了websockets协议。 它在localhost上工作,而不是在Heroku上。在浏览器中,我得到: 到'wss:/node-omi.herokuapp.com/socket.io/?eio=2&transport=WebSocket&sid=*'的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:503 在服务器端,我获得日志: 2

  • 问题内容: 我已经配置了SSL enpoint,并且可以确认它正在工作。当我进入日志时,会看到以下内容: 我试图追踪有关退出代码143的一些信息,以及为什么所有进程都被停止。签出以下服务器文件: 感谢您的提前反馈。如果需要,我可以提供更多详细信息。 ------解决方案(编辑)------- 请参阅下面的答案。 问题答案: 我在这里找到了答案:ExpressJS节点HTTPS服务器上的Heroku

  • 问题内容: 我在Node.js中运行一个基本的Express应用程序,并尝试部署到Heroku。该应用程序在本地运行良好,我相信我在Heroku上的设置一直很好,直到启动服务器时出现以下错误: 这是目前我在app.js中拥有的所有内容 我也按照Heroku入门中所述运行了此程序。 我相信我只需要设置生产端口即可?谢谢。 问题答案: 您可以显示调用的整个代码部分吗?您应该检查过程环境变量PORT,而

  • 问题内容: 我使用以下行启动了node.js服务器来设置端口: 这意味着,它应该像本地运行时那样读取PORT env变量或默认为8080。它们都不在Heroku上发生,并且服务器始终使用默认端口80。如何更改该端口? 问题答案: 你不能 Heroku设置您应该绑定的PORT变量,并在tcp / 80上进行侦听。

  • 我在Heroku上上传了JavaServlet项目。当我在浏览器上检查它时,它显示“应用程序错误”,没有运行。 根据Heroku上的构建日志,我的项目似乎构建和部署得当。 我参考了这一页。我用的是gradle而不是Maven。https://devcenter.heroku.com/articles/deploying-gradle-apps-on-heroku#using-webapp-runn

  • 问题内容: 我已经编写了一个基本的node.js应用程序,并且设法将其部署在Heroku上没有任何问题。我创建了 package.json 和 Procfile ,但是从日志中看到没有正在运行的进程,因此无法获得任何响应。可能是什么问题呢? PS: 我不想使用 Express 框架 我的代码: 我的package.json: 日志: 问题答案: 您已缩放heroku应用程序了吗? 这是必需的步骤。