我用 node.js 设置了 Socket.IO,它通过侦听/连接到端口 8000(或另一个不是我的服务器正在运行的端口的端口)在我的本地开发机器上工作。
当我尝试在 heroku 上做同样的事情时,我的客户端脚本导入失败。
我试过相对路径
<script src="/socket.io/socket.io.js"></script>
我还尝试绑定到 heroku 上的端口 8000 并使用完整路径名
<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>
我确实读到 websockets 不能在 heroku 上工作,所以我在后端的 after_start.js 文件中有以下代码。除了将 socket.io 配置为使用传输/轮询之外,我还需要做其他事情吗?
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);
});
加载 heroku 应用程序时出现此错误:
GET http://<myAppName>.herokuapp.com/socket.io/socket.io.js 404 (Not Found)
编辑:我实际上正在使用 geddy mvc 框架,并希望在 heroku 上设置它(基本上就像 socket.io),我发现这个答案让我看起来可以类似地使用它: GeddyJS & socket.io:从服务器端捕获和发出事件