繁体   English   中英

websocket 连接在写入文件时关闭

[英]websocket connection closes upon writing to file

所以我使用 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")
    })
})

所以我想通了。 我在开发时在本地主机上同时运行服务器和客户端。 因此文件目录是相同的。 后来我发现由于安全原因,不可能在客户端用 javascript 写入文件。 所以我所做的就是将服务器的 url 更改为远程机器,并且我能够使用服务器代码写入文件。 特别是上面代码中的 writeFile() 函数。 我实际上不必接触我的代码。 这只是关于配置和设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM