соединение websocket закрывается при записи в файл - PullRequest
0 голосов
/ 29 марта 2020

, поэтому я подключаю клиента к серверу с помощью веб-сокетов (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")
    })
})

1 Ответ

0 голосов
/ 01 апреля 2020

Так что я понял это. Я работал как сервер, так и клиент на локальном хосте во время разработки. И поэтому каталоги файлов одинаковы. Позже я узнал, что невозможно записать файл в javascript на стороне клиента по соображениям безопасности. Поэтому все, что я сделал, это изменил URL сервера на удаленную машину, и я смог записать в файл, используя код сервера. в частности, с функцией writeFile () в приведенном выше коде. На самом деле мне не нужно было трогать мой код. Это было просто о настройке и настройке.

...