2012-08-13 50 views
1

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

但冲浪到我的浏览器,当我得到这个在我的浏览器控制台

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 

有没有人知道mistak e是我做的?

(它实际上是同样的问题在这里: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"); 
    }); 

的第一个日志,在终端得到记录(“服务器启动”),但第二个(“连接造” )不会被记录。所以连接不成。 我以为这是因为我的客户端“设置”错误。

+0

如果它是为[Node.js的socket.io.js找不到或IO同样的问题没有定义](http://stackoverflow.com/questions/10563080/node-js-socket-io-js-not-found-or-io-not-defined),你有没有尝试过这个问题的答案? – phihag 2012-08-13 17:19:03

+0

你可以在服务器端发布有关Socket.IO安装的代码吗?这里的典型问题是Socket.IO没有监听文件请求(也就是设置错误)。没有看到你的代码,我们不能排除这一点。 – 2012-08-13 17:21:00

+0

对我而言,这通常是由于未在域的根目录下运行应用程序造成的。这意味着这工作正常(http://domain.com),但这会导致404客户端代码没有一些修改(http://domain.com/path/to/app/。 – 2012-08-13 17:44:14

回答

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

哇,Chris,谢谢!但我不得不做一些改变:前两行应该是'var express = require('express');''var app = express;'并且从它开始工作!谢谢! – Decor 2012-08-13 18:22:56

+0

很高兴能帮到你。 – Chris 2012-08-13 18:30:42

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