2012-09-28 125 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

相关问题