2013-08-25 150 views
1

我有一個快速的應用程序使用socket.io。我不清楚客戶需要什麼,所以如果有人能告訴我該怎麼做,我會很感激。另外,我不確定我的客戶端代碼是否正確。這裏是我的客戶端套接字代碼:爲什麼io未定義?

var socket = io.connect('http://localhost:3000'); 
    var tView = new totalViewModel(); 
    socket.on('connect', function (data) { 
    function loggedIn(e) { 
     e.preventDefault(); 
     var logged = { 
      username: document.getElementById('pEmail'), 
      password: document.getElementById('pWord') 
     }; 
     socket.emit('login', JSONout(logged)); 
    } 
    socket.on('uploadList', function (data) { 
     tView.setNum(JSONin(data).total); 
     ko.applyBindings(tView); 
    }); 

    function logPurchase(e) { 
     e.preventDefault(); 
     var purchObj = { 
      price: document.getElementById('pPrice').value, 
      priceName: document.getElementById('pName').value, 
      entryDate: new Date() 
     } 
     socket.emit('purchaseLog', JSONout(purchObj)); 
    } 

    function logDeposit(e) { 
     e.preventDefault(); 
     var depositObj = { 
      price: document.getElementById('dPrice').value, 
      entryDate: new Date() 
     }; 
     socket.emit('depositLog', JSONout(purchObj)); 
    } 

    function getLogout(e) { 
     e.preventDefault(); 
     socket.emit('goLogout', { 
      none: 'none' 
     }); 
    } 

    function getIndex(e) { 
     e.preventDefault(); 
     socket.emit('goIndex', { 
      none: 'none' 
     }); 
    } 

    function getMonthly(e) { 
     e.preventDefault(); 
     socket.emit('goMonthly', { 
      none: 'none' 
     }); 
    } 

    function getYearly(e) { 
     e.preventDefault(); 
     socket.emit('goYearly', { 
      none: 'none' 
     }); 
    } 
    socket.on('wentMonth', function (data) { 
     tView.setNum(total in JSONin(data)); 
     ko.applyBindings(tView); 
    }); 
    socket.on('wentYearly', function (data) { 
     tView.setNum(total in JSONin(data)); 
     ko.applyBindings(tView); 
    }); 

    function register(e) { 
     e.preventDefault(); 
     var reg = { 
      username: document.getElementById('pEmail').value, 
      password: document.getElementById('pWord').value, 
      dateJoined: new Date(), 
      total: 0, 
      purchase: {}, 
      deposit: {}, 
      monthlyTotal: 0, 
      yearlyTotal: 0 
     }; 
     socket.emit('registered', JSONout(reg)); 
    } 
}); 

這裏是我的服務器端代碼:

var express = require('express'); 

var app = express(); 

var mongojs = require('mongojs'); 

var http = require('http'); 

var db = mongojs('127.0.0.1:27017/mySpendingDB', ['users']); 

var server = http.createServer(app); 

var io = require('socket.io').listen(server); 

var path = require('path'); 

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'ejs'); 
    app.engine('html', require('ejs').renderFile); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.get('/', function (req, res) { 
    res.render('login.html', {title: 'Login'}); 
}); 
app.get('/index', function (req, res) { 
    res.render('index.html', {title: 'Daily'}); 
}); 
app.get('/monthly', function (req, res) { 
    res.render('monthly.html', {title: 'Monthly'}); 
}); 
app.get('/yearly', function (req, res) { 
    res.render('yearly.html', {title: 'Login'}); 
}); 
app.get('/register', function (req, res) { 
    res.render('register.html', {tittle: 'Register'}); 
}); 
app.get('/logout', function (req, res) { 
    req.logout(); 
    res.redirect('/'); 
}); 

var user=""; 

io.sockets.on('connection', function(socket) { 
    console.log('socket.io started'); 
    socket.on('login', function(data) { 
     console.log('login'); 
     var checkUser= db.users.find(data); 
     console.log(checkUser); 
     if(checkUser !== null) { 
      console.log('checked user'); 
      user=checkUser.username; 
      app.get('/index', function(req, res) { 
       res.direct('/index'); 
      }); 
      socket.emit('uploadList', checkUser.total); 
     } 
    }); 
    socket.on('purchaseLog', function(data) { 
     var usercollection = db.users.find({username: user}); 
     usercollection.purchase.save(data); 
    }); 
    socket.on('depositLog', function(data) { 
     var usercollection = db.users.find({username: user}); 
     usercollection.deposit.save(data); 
    }); 
    socket.on('goLogout', function(data){ 
     app.get('/logout', function (req, res) { 
      req.logout(); 
      res.redirect('/'); 
     }); 
    }); 
    socket.on('goIndex', function(data){ 
     app.get('/index', function (req, res) { 
      res.redirect('/index'); 
     }); 
    }); 
    socket.on('goMonthly', function(data){ 
     app.get('/monthly', function (req, res) { 
      res.redirect('/monthly'); 
     }); 
     var monTot = db.users.find({username: user}).monthlyTotal; 
     socket.emit('wentMonthly', monTot); 
    }); 
    socket.on('goYearly', function(data){ 
     app.get('/index', function (req, res) { 
      res.redirect('/index'); 
     }); 
     var yearTot = db.users.find({username: user}).yearlyTotal; 
     socket.emit('wentYearly', yearTot); 
    }); 
    socket.on('registered', function(data){ 
     db.users.save(data); 
     app.get('/index', function (req, res) { 
      res.redirect('/index'); 
     }); 
    }); 
}); 

server.listen(3000); 
+1

var io = require('socket.io')。listen(server);'它是否將'io'設置爲您實際需要的值? –

+0

我不確定,這就是爲什麼我問這個問題,我對node.js非常陌生 –

回答

3

在你可能會忘記添加socket.io lib中的客戶端:

<script src="http://localhost:3000/socket.io/socket.io.js"></script> 

在它應該工作的服務器(你正確定義了io)。