2012-09-28 56 views
3

我試圖建立一個簡單的聊天使用node.js(不明)和socket.io。問題在於Chrome在我的外部包含文件中停留在html文件中,導致這些文件永遠不會包含在內。我包含一個ccs文件和三個JavaScript文件。正如在Stackoverflow上對其他相關問題的回答中所建議的那樣,我通過要求MIME模塊並使用mime.lookup(url)(它表示'text/html')來檢查我的文檔的MIME類型。我專門設置了返回標題爲'Content-Type' : 'text/html',甚至將其設置爲'text/css'和'text/javascript'都無濟於事。截至目前,我不知道接下來要做什麼。請幫忙!鉻說:「資源解釋爲樣式表,但與MIME類型文本/ HTML傳輸」

chat.html:

<!DOCTYPE html> 
    <html> 
     <head> 
     <title>CHAT</title> 
     <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
     <link type="text/css" rel="stylesheet" href="css/style.css" /> <!-- First line that Chrome complains about --> 
     <script type="text/javascript" src="/socket.io/socket.io.js"></script> <!-- Second line that Chrome complains about --> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> 
     <script type="text/javascript" src="chatClient.js"></script> 
        </head> 
     <body> 
     <h1>this shall be a chat</h1> 
     </body> 
    </html> 

chatClient.js:

var socket = io.connect('http://localhost'); 

     var chatBox = document.createElement('div'); 

     chatBox.id = 'chatBox'; 

     socket.on('server', function (data) { 
     console.log('Server says: ', data.message); 

     socket.emit('client', { clientMessage : 'this is all I have to say, right now!' }); 
}); 

chatServer.js:

var app = require('http').createServer(handler), 
io = require('socket.io').listen(app), 
fs = require('fs'), 
mime = require('mime'); 

var url = __dirname + '/chat.html'; 
var mimeType = mime.lookup(url); 

console.log(mimeType); 

app.listen(8080); 

function handler (req, res) { 
    fs.readFile(url, function (err, data) { 
    if (err) { 
     res.writeHead(500); 
     return res.end('Error loading chat'); 
    } 

    res.setHeader('Content-Type', mimeType); // Sets the header to 'text/html' 
    res.writeHead(200); 
    res.end(data); 
    }); 
} 

io.sockets.on('connection', function (socket) { 
    console.log('CHAT ONLINE'); 
    socket.emit('server', { message: 'hello world' }); 

    socket.on('client', function (data) { 
    console.log('Client says: ', data.clientMessage); 
    }); 
}); 

這是我絕對的第一時間在這裏發帖,請讓我知道如果還有什麼我應該列入的,以協助你解決這個問題。

回答

4

您在初始化期間根據設置了mimeType一個您可能發送的文件,而不是基於您實際發送的文件進行設置。這將導致您可能發送的任何非HTML文件(例如CSS或JS文件)帶有誤導性的Content-Type標頭。您需要在內部檢查您的請求處理程序。

+0

是的,這解決了我的問題。謝謝一堆!我想我沒有完全理解我的請求處理程序做了什麼。現在讓開心的時刻開始吧! – bitsnpxls

相關問題