1

我正在制作一个使用 nodejs、mongodb、socket.io、express 和 mongoose 的网络应用程序。
浏览到本地主机时,我可以启动服务器并在浏览器中正确获取所需的 html 文件。
我遇到的问题是让我的 socket.io 工作。在我的服务器端一切正常:我在终端中得到“info - socket.io started”。

但是当我浏览我的浏览器时,我在浏览器控制台中得到了这个

    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 not found or io not defined

提前致谢!

编辑: 我在服务器端的代码是这样的:

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

第一个日志记录在终端中(“服务器已启动”),但第二个日志(“建立连接”)没有被记录。所以没有建立联系。我认为这是因为我的客户端的“设置”错误。

4

2 回答 2

2

查看快速迁移指南 2->3 https://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 回答