我正在尝试设置Node.js本地服务器,以便从通过串行端口(使用USB)连接的Arduino收集数据。
我正在使用socket.io来连接服务器和客户端,使用Node.js读取数据,然后将其发送到客户端网页。
上个月,代码运行良好,现在(完全没有任何更改),我尝试运行它,但出现此错误。
我使用了一些测试日志,并且连接似乎正常(正在打印“ 1连接”)。
这是Node.js代码:
var http = require("http");
var url = require('url');
var fs = require('fs');
var io = require('socket.io');
const SerialPort = require('serialport');
const parsers = SerialPort.parsers;
const port = new SerialPort('COM3', () => {
console.log('Port Opened');
});
const parser = new parsers.Readline({
delimiter: '\n'
});
var server = http.createServer(function(request, response){
var path = url.parse(request.url).pathname;
switch(path){
case '/':
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('hello world');
response.end();
break;
case '/socket.html':
fs.readFile(__dirname + path, function(error, data){
if (error){
response.writeHead(404);
response.write("opps this doesn't exist - 404");
response.end();
}
else{
response.writeHead(200, {"Content-Type": "text/html"});
response.write(data, "utf8");
response.end();
}
});
break;
default:
response.writeHead(404);
response.write("opps this doesn't exist - 404");
response.end();
break;
}
});
server.listen(5000);
port.pipe(parser);
io.listen(server);
var listener = io.listen(server);
listener.sockets.on('connection', function(socket){
console.log('1 connection');
function ReadSerialData(data){
console.log(data);
console.log('Connection');
//do stuff here
//socket.emit('message', 'connection successuf');
socket.emit('message', {'message': data})
}
parser.on('data', ReadSerialData);
});
这是我的socket.html
代码:
<html>
<head>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<script>
var socket = io.connect();
socket.on('message', function(data){
console.log(data.message);
});
</script>
<div>Testing page! </div>
</body>
</html>
我尽了一切,但我无法摆脱
答案 0 :(得分:0)
删除双io.listen(server);
解决了该错误。
通过访问error 404
给出的/socket.io/socket.io.js
没问题,一旦服务器正确运行,它将消失。
数据问题出在解析器中:分隔符为\n
,但在Arduino代码中将\r
打印为新行。