我使用node.js設置了Socket.IO,它通過偵聽/連接到端口8000(或另一個不是我的服務器的端口的端口)工作在本地開發計算機上正在運行)。在Heroku上使用Node.js的Socket.IO
當我嘗試在heroku上做同樣的事情時,我的客戶端腳本導入失敗。
我已經試過相對路徑
<script src="/socket.io/socket.io.js"></script>
我也試圖綁定到端口8000在Heroku和使用的全路徑名
<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框架,並希望得到這個工作,我怎麼把它設置(基本上只是像socket.io)在heroku上,我發現這個答案,使得它看起來像我可以使用它類似: GeddyJS & socket.io: catching and emitting events from server side
你需要使socket.io監聽你的主'服務器'實例(與Express一起使用) – SLaks
你是否啓動了一個http服務器,如express,或者只是socket.io? –
已更新原始帖子。我正在使用Geddy。 –