1

nodejs、mongodb、socket.io、express、mongooseを利用するウェブアプリを作成しています。
サーバーを起動して、ローカルホストを参照するときにブラウザで必要なhtmlファイルを正しく取得できます。
私が抱えている問題は、socket.ioを機能させることです。私のサーバー側では、すべてが正常に機能しています。端末に「info--socket.iostarted」が表示されます。

しかし、ブラウザにネットサーフィンすると、ブラウザコンソールでこれを取得します

    Failed to load resource: the server responded with a status of 404 (Not Found) 
    Uncaught ReferenceError: io is not defined 

これは私がsocket.io.jsに接続する方法です

    <script src="/socket.io/socket.io.js"></script>

私の地図の構造は次のようになります。

 map
  -app.js
  -public
  --index.html

  -node_modules
  --socket.io
  --mongodb
  --express
  --jade
  --mongoose

私が犯した間違いを誰かが知っていますか?

(これは実際にはここと同じ問題です:Node.js socket.io.jsが見つからないか、ioが定義されていません

前もって感謝します!

編集: サーバー側の私のコードはこれです:

    var app= require('express').createServer();
    var io = require('socket.io').listen(app);
    var mongoose = require('mongoose');
    var db = mongoose.connect('mongodb://localhost/db');

    app.listen(3030);
    console.log("server started");

    app.get('/',function(req,res){
res.sendfile(__dirname + '/public/index.html');
    });


    io.sockets.on('connection',function(socket){    
    console.log("connection made");
    });

最初のログは端末に記録されますが(「サーバーが開始されました」)、2番目のログ(「接続が確立されました」)は記録されません。したがって、接続は確立されません。これは、クライアント側の「設定」が間違っていたためだと思いました。

4

2 に答える 2

2

エクスプレス移行ガイド2-> 3https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.xを確認してください このようなものが機能するはずです

 var express = require('express');
 var app = express();
 var http = require('http');
 var server = http.createServer(app);
 var io = require('socket.io').listen(server);
 var mongoose = require('mongoose');
 var db = mongoose.connect('mongodb://localhost/db');

 server.listen(3030);
 console.log("server started");

 app.get('/',function(req,res){
     res.sendfile(__dirname + '/public/index.html');
 });


 io.sockets.on('connection',function(socket){    
    console.log("connection made");
 });
于 2012-08-13T18:05:30.953 に答える
-1
var app = express();
app.set('port', process.env.PORT || 3000);

...

var server = http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

var io = socket.listen(server);
io.sockets.on('connection', function () {
  console.log('hello world im a hot socket');
});
于 2014-01-12T10:10:57.233 に答える