1

herokuで使用しようとするrequire("socket.io");と、「モジュールsocket.ioが見つかりません」というメッセージが表示されて失敗します。

ローカルのnode.jsサーバーでも同じことが正常に実行されているため、セットアップに問題があると思います。

何を変更する必要がありますか?

4

6 に答える 6

6

杉のHerokuはWebSocketをサポートしていません

とにかく、socket.ioを使用できます

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

https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku

于 2012-05-29T18:26:34.560 に答える
1

PaaSプロバイダーを変更する必要があります。HerokuはWebSocketをサポートしていません。nodejitsuはサポートWebSocketで知られています

socket.ioまた、 package.json依存関係リストに追加するのを忘れている可能性があります。

于 2012-04-14T20:24:01.167 に答える
1

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);
    }); 
});

チャームのように働く!!!

于 2012-04-16T16:41:03.120 に答える
0

このプロジェクトのwikiページによると、socket.IOのトランスポートオプションを(10)秒の期間でxhr-pollingに変更する必要があります。

于 2012-04-15T06:47:46.697 に答える
0

websocketトランスポートはベータ状態のHerokuで動作しています。あなたはそれを有効にすることができますheroku labs:enable websockets -a YOUR_APP_NAME

于 2013-11-07T04:07:46.463 に答える
0

これらはsocket.io関連の問題の解決策です

私は働くことを願っています

  1. (index.jsまたはserver.js)および(index.htmlとclient.js)ポートのポートは異なっている必要があります。(以下のコードを参照)

=============あなたのindex.jsファイル======================

(ここのポートは8000です)

const express = require("express")
var app = express();
const http = require('http')
var server = http.createServer(app);
  
const port = process.env.PORT || 8000
server.listen(port,()=>
{
    console.log("Listening at port => "+port)
});
var io = require('socket.io')(server, {
    cors: {
      origin: '*',
    }
});

const cors = require("cors")
app.use(cors()) 

=============client.jsファイル======================

ここのポートは8080です

const socket = io.connect('https://localhost:8080/')

=============あなたのindex.htmlファイル======================

ここのポートは8080です

 <script defer src="https://localhost:8080/socket.io/socket.io.js"> 
 </script>

「server.jsまたはindex.js」ポートは「client.js」ポートとは異なる必要があることに注意してください(これは重要です)

(index.htmlとclient.js)ポートは同じである必要があります

  1. socket.ioを操作するときは、常に「http」を使用する必要があります(上記のコードを参照)

  2. Uは、より多くのリソースを持つことができるため、corsを含めない場合があります。corsherokuを使用しないと、一部の依存関係がherokuにインストールされないようになります(上記のコードを参照)。

  3. 「io」を「io.connect」に置き換えてみてください

    const socket = io.connect('https:// localhost:8080 /')

  4. HTMLの最後にタグを書き込む必要があります

  5. 「socket.io」に必要なこのコードを追加するのを忘れる可能性があります

それはあなたのhtmlファイルで必要です

  1. 「node_modules」と「package-lock.json」を削除し、cmdに「npmi」と書き込みます

  2. これはpackage.jsonのスクリプトに含まれている必要があります

    "start": "node index.js"、

私はnodemonについて話していません、ここで単純なノードを使用してください

  1. バージョンが問題を引き起こしている可能性があります。すべての「devDependencies」を「package.json」の「dependencies」にコピーし、このようなバージョンに「*」を入れることで、問題を回避できます。

    「依存関係」:{

    "cors": "*"、

    "特急": "*"、

    "nodemon": "*"、

    "socket.io": "*"

    }、

    "devDependencies":{}

于 2021-05-16T12:16:43.237 に答える