gpt4 book ai didi

socket.io 和 differents 文件夹 --- 找到解决方案

转载 作者:行者123 更新时间:2023-12-03 22:54:25 25 4
gpt4 key购买 nike

我是 socket.io 的新手,我已经遇到了一个问题,我认为是次要的。
我已经使用 npm 正确安装了 node.js 和 socket.io。然后只是为了测试,我从 socket.io 剪切并粘贴了一个代码示例,一切正常。
现在,我想构建我的代码和文件夹,我创建了一个文件夹“client”来放置一个新的 js 文件 client.js 和示例中的客户端代码。
这是我的架构

/client
client.js
index.html
server.js

客户端.js:
var socket = io.connect('http://localhost:80');
socket.on('news', function (data) {
alert('sqd');
console.log(data);
socket.emit('my other event', { my: 'data' });
});

服务器.js
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')

app.listen(80);

function handler (req, res) {
fs.readFile(__dirname + '/index.html', 'utf-8',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html ' + __dirname);
}

res.writeHead(200, {'Content-Type' : 'text/html'});
res.end(data);
});
}

io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});

索引.html
<!doctype html>
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title></title>

<script type="text/javascript" src="/client/client.js"></script>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>

</head>
<body>
</body>
</html>

当我在 localhost:80 刷新浏览器时,我的 client.js 出现错误:
Uncaught SyntaxError: Unexpected token <
Resource interpreted as Script but transferred with MIME type text/html

好像把我的js文件解释成js文件有问题。我已经阅读了有关该问题的一些主题,但没有任何效果。

你能帮我吗 ?

谢谢:)

好的,我找到了一个解决方案......您必须在静态网络服务器中为每个文件请求指定内容类型。可能它可以帮助某人。
这是处理程序函数:
function handler (req, res) {

var filePath = req.url;

if (filePath == '/') {
filePath = './client/index.html';
} else {
filePath = './client/lib' + req.url;
}

var extname = path.extname(filePath);
var contentType = 'text/html';

switch (extname) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
}

path.exists(filePath, function(exists) {

if (exists) {
fs.readFile(filePath, function(error, content) {
if (error) {
res.writeHead(500);
res.end();
}
else {
res.writeHead(200, { 'Content-Type': contentType });
res.end(content, 'utf-8');
}
});
}
else {
res.writeHead(404);
res.end();
}
});
}

希望这可以帮助某人。
我喜欢发布问题并在没有帮助的情况下自己回复。不知何故,这意味着我绝望得太快了。我也喜欢在帖子中讲述我的生活:)
好的,我要吃点东西,喝更多的咖啡!!!

最佳答案

非常感谢!这解决了我的问题!!我将开关更改为以下代码:

var extname = path.extname(filePath);
var contentTypesByExtention = {
'html': 'text/html',
'js': 'text/javascript',
'css': 'text/css'
};
var contentType = contentTypesByExtention[extname] || 'text/plain';

维护起来可能更容易:)

关于socket.io 和 differents 文件夹 --- 找到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com