2012-08-13 48 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'); 
});