Node.js socket.io在heroku上不工作

Node.js socket.io在heroku上不工作,node.js,heroku,Node.js,Heroku,每当我尝试使用require(“socket.io”)在heroku上失败,并显示消息“找不到模块socket.io” 我认为这是我的设置中的一个问题,因为在我的本地node.js服务器中同样可以正常运行 我必须更改什么?您必须更改PaaS提供商。Heroku不支持WebSocket。其中,众所周知的是支撑腹板箱 另外,您可能忘记了在package.json依赖项列表中添加socket.io。您必须更改PaaS提供程序。Heroku不支持WebSocket。其中,众所周知的是支撑腹板箱 另外,您

每当我尝试使用
require(“socket.io”)在heroku上失败,并显示消息“找不到模块socket.io”

我认为这是我的设置中的一个问题,因为在我的本地node.js服务器中同样可以正常运行


我必须更改什么?

您必须更改PaaS提供商。Heroku不支持WebSocket。其中,众所周知的是支撑腹板箱


另外,您可能忘记了在package.json依赖项列表中添加
socket.io

您必须更改PaaS提供程序。Heroku不支持WebSocket。其中,众所周知的是支撑腹板箱


另外,您可能忘记了在package.json依赖项列表中添加
socket.io

根据需要,您需要将socket.io上的传输选项更改为xhr轮询,轮询持续时间为(10)秒

根据,您需要将socket.IO上的传输选项更改为xhr轮询,持续时间为(10)秒

package.json修改为

"dependencies": {
"async":     "0.1.18",
"ejs":       "0.4.3",
"express":   "2.4.6",
"faceplate": "0.0.4",
"socket.io": "latest"   },
服务器端代码是:

var port=process.env.PORT || 3000;
var http=require('http');
var app=http.createServer(function(req,res){
    res.write("server listening to port:"+port);
    res.end();
}).listen(port);
socket=require("socket.io");
io=socket.listen(app);
io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
});
io.sockets.on("connection",function(socket){
    console.log("new connection");
    socket.on("eventA",function(data){
        io.sockets.emit("eventB",data);
    }); 
});

像个魔术师一样工作

package.json修改为

"dependencies": {
"async":     "0.1.18",
"ejs":       "0.4.3",
"express":   "2.4.6",
"faceplate": "0.0.4",
"socket.io": "latest"   },
服务器端代码是:

var port=process.env.PORT || 3000;
var http=require('http');
var app=http.createServer(function(req,res){
    res.write("server listening to port:"+port);
    res.end();
}).listen(port);
socket=require("socket.io");
io=socket.listen(app);
io.configure(function () { 
  io.set("transports", ["xhr-polling"]); 
  io.set("polling duration", 10); 
});
io.sockets.on("connection",function(socket){
    console.log("new connection");
    socket.on("eventA",function(data){
        io.sockets.emit("eventB",data);
    }); 
});

像个魔术师一样工作

雪松上的Heroku不支持WebSocket

无论如何,您可以将socket.io与

io.set("transports", ["xhr-polling"]); 
io.set("polling duration", 10); 

cedar上的Heroku不支持WebSocket

无论如何,您可以将socket.io与

io.set("transports", ["xhr-polling"]); 
io.set("polling duration", 10); 

websocket传输正在Heroku上进行测试。您可以使用heroku labs:enable websockets启用它-您的应用程序名称正在heroku上进行测试状态下的websocket传输。您可以使用heroku labs:enable websockets-a YOUR_APP_NAME启用它

这些是socket.io相关问题的解决方案

我希望我能工作

  • (index.js或server.js)和(index.html和client.js)端口中的端口必须不同。(参考以下代码)
  • ================您的index.js文件======================

    (这里的港口是8000)

    ================您的client.js文件======================

    这里的端口是8080

    ================您的index.html文件======================

    这里的端口是8080

    
    
    请记住,您的“server.js或index.js”端口应该与“client.js”端口不同(请记住这一点很重要)

    (index.html和client.js)端口必须相同

  • 在使用socket.io时,应始终使用“http”(请参阅上面的代码)

  • 您可能不包括cors,因为它允许您拥有更多的资源,而没有cors heroku可以防止某些依赖项不安装在heroku中(请参阅上面的代码)

  • 尝试将“io”替换为“io.connect”

    常量套接字=io.connect('https://localhost:8080/")

  • 必须在HTML的末尾写入标记

  • 您可能会忘记添加此代码,它必须在“socket.io”中添加

  • 它是html文件中必需的

  • 删除“node_modules”和“package lock.json” 并在cmd中写入“npm i”

  • 这应该在package.json的脚本中

    “开始”:“node index.js”

  • 我不是说nodemon,在这里使用简单的node

  • 可能是版本产生了问题,您可以通过将所有“devdependency”复制到“package.json”中的“dependencies”并将“*”放在类似这样的版本中来避免它

    “依赖项”:{

    “cors”:“*”

    “快递”:“*”

    “nodemon”:“*”

    “socket.io”:“*”

    },

    “依赖性”:{}

  • 这些是socket.io相关问题的解决方案

    我希望我能工作

  • (index.js或server.js)和(index.html和client.js)端口中的端口必须不同。(参考以下代码)
  • ================您的index.js文件======================

    (这里的港口是8000)

    ================您的client.js文件======================

    这里的端口是8080

    ================您的index.html文件======================

    这里的端口是8080

    
    
    请记住,您的“server.js或index.js”端口应该与“client.js”端口不同(请记住这一点很重要)

    (index.html和client.js)端口必须相同

  • 在使用socket.io时,应始终使用“http”(请参阅上面的代码)

  • 您可能不包括cors,因为它允许您拥有更多的资源,而没有cors heroku可以防止某些依赖项不安装在heroku中(请参阅上面的代码)

  • 尝试将“io”替换为“io.connect”

    常量套接字=io.connect('https://localhost:8080/")

  • 必须在HTML的末尾写入标记

  • 您可能会忘记添加此代码,它必须在“socket.io”中添加

  • 它是html文件中必需的

  • 删除“node_modules”和“package lock.json” 并在cmd中写入“npm i”

  • 这应该在package.json的脚本中

    “开始”:“node index.js”

  • 我不是说nodemon,在这里使用简单的node

  • 可能是版本产生了问题,您可以通过将所有“devdependency”复制到“package.json”中的“dependencies”并将“*”放在类似这样的版本中来避免它

    “依赖项”:{

    “cors”:“*”

    “快递”:“*”

    “nodemon”:“*”

    “socket.io”:“*”

    },

    “依赖性”:{}


  • 有人知道Heroku是否/何时计划支持websockets/real-time吗?它已经开箱即用,下面的答案已经过时了:有人知道Heroku是否/何时计划支持websockets/real-time吗?它已经开箱即用,下面的答案已经过时了:现在Heroku支持Node.js应用程序的websockets。现在heroku支持Node.js应用程序的WebSocket。