2015-06-09 33 views
0

我試圖用快速JS(玉模板)開發一個聊天應用程序和socket.io。這裏是我的app.js快遞JS聊天應用:404錯誤的socket.io.js文件

var express = require('express'); 
var path = require('path'); 
var http = require('http'); 
var io = require('socket.io')(http); 
var app = express(); 
//start chat with socket io 
io.sockets.on('connection',function(socket){ 
    console.log("connection"); 
    socket.on('send message',function(data,callback){ 
    var msg=data.trim(); 
    if(msg==null){ 
     callback("enter a messsage"); 
    }else{ 
     console.log("chat message"+msg); 
     io.sockets.emit('new message',{msg:msg}); 
    } 
    }); 
}); 
//end socket 

這裏是我的chat.js在客戶端

$(document).ready(function(){ 
    var socket=io.connect('http://localhost:3000'); 
    var $message=$('#message'); 
    var $messageForm=$('#send-message'); 
    //opens a connection and send to sever 
    $messageForm.submit(function(e){ 
      e.preventDefault(); 
      socket.emit('send message',$message.val(),function(data){ 
       console.log("data"+data); 
      }); 
      $message.val(''); 
      }); 
    //read the chat messages from users 
    socket.on('new message',function(data){ 
     console.log('data.msg'); 
    }); 
}); 

chat.jade文件

<form id="send-message"> 
<input type="text" id="message"> 
<input type="submit" value="submit"/> 
</form> 
<script src="http://localhost/api/jquery.min.js"></script> 
<script src="http://localhost:3000/socket.io/socket.io.js"></script> 
文件

我將在此文件上收到404錯誤http://localhost:3000/socket.io/socket.io.js。在chat.js腳本中也獲得Uncaught ReferenceError: io is not defined。我認爲這是因爲缺少socket.io.js文件。

回答

3

你有幾個問題。
在玉模板提供靜態文件,你應該使用這樣的事:

link(rel='text/javascript', href='/js/socket.io.js')  

這些文件通常會在你的快遞應用一個public目錄中包含。 然後在你的app.js你應該有這樣的:

app.use(express.static('public')); 

其在快遞網站這裏解釋 - http://expressjs.com/starter/static-files.html

別處

Uncaught ReferenceError: io is not defined 

$(document).ready(function(){ 
    var socket=io.connect('http://localhost:3000'); 

這是因爲你還沒有定義io您客戶。你可以撥打connect,撥打io,但是沒有在任何地方聲明/定義io

你還沒有在你的應用端創建一個套接字服務器。你應該做的線沿線的東西:

var express = require('express'); 
var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 
var port = process.env.PORT || 3000; 

server.listen(port, function() { 
    console.log('Server listening at port %d', port); 
}); 
io.on('connection', function (socket) { 
    // when the client emits 'new message', this listens and executes 
    socket.on('new message', function (data) { 
     // we tell the client to execute 'new message' 
     socket.broadcast.emit('new message', { 
     }); 
    }); 


Socket.io有GitHub上,你應該作爲參考用一個例子聊天應用。
chat.js將相當於其public/main.js
chat.jade相當於其public/index.html
和你app.js符合他們index.js

+0

讓我試試 –

+0

我覺得我有'io.connect'問題。 –

+0

我在chat.jade中附帶了一個socket.io文件,現在404錯誤已經解決了,但'io引用錯誤'仍然存在 –