【发布时间】:2020-03-29 06:53:30
【问题描述】:
所以我正在使用 websockets (ws) 将客户端连接到服务器。我成功地将消息发送到服务器并将其发送回客户端。问题是当我尝试将接收到的消息写入文件时,服务器会断开客户端的连接。消息已成功写入,但我最终断开了客户端。看起来有关写入功能的某些内容会断开我的客户端。我正在使用 fs.writFile(),我已经尝试过 fs.createWriteStream()。但是,读取文件并不会断开它。
const http = require('http');
const WebSocket = require('ws')
const fs = require('fs');
let counts = [0,0]
const server = http.createServer((req,res)=>{
console.log(' Received request for ' + request.url);
});
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection',(ws)=>{
console.log("serving...")
ws.on('message',(message)=>{
console.log("Received:"+message)
if(message ==='1'){
counts[0]=parseInt(counts[0])+1
fs.writeFile('votecnts.txt',`${counts[0].toString()} ${counts[1].toString()}`,(err) =>{
if(err) throw err
})
}
else if (message==='2'){
counts[1]=parseInt(counts[1])+1
fs.writeFile('votecnts.txt',`${counts[0].toString()} ${counts[1].toString()}`,(err) =>{
if(err) throw err
})
}
else{console.log(typeof(message))}
ws.send("cand_one: "+counts[0].toString()+"\n cand_two: "+counts[1].toString())
})
ws.on('close',function(){
console.log("lost client")
})
})
【问题讨论】:
-
您的
fs.writeFile()操作是否出错?您是否正在运行任何类型的开发工具,可以在文件更改时自动重启服务器? -
不,我没有收到任何错误。它实际上成功执行写入文件。 err回调函数没有发现错误
-
请回答我上一个问题的第二部分。例如,您使用的是 nodemon 吗?如果是这样,它可能会导致您的服务器在每次服务器写入文件时自动重新启动。而且,导致您的服务器重新启动会终止 webSocket 连接。
-
哦,不。我没有使用 nodemon。
标签: javascript node.js websocket writefile