Моя проблема в том, что я настроил несколько веб-сокетов для передачи данных, и когда клиент получит данные, он изменит css приложения веб-страницы. Проблема в том, что данные отправляются, но электронное приложение этого не отражает. Мне нужно обновить sh приложение, чтобы увидеть новый css.
main. js
const { app, BrowserWindow } = require('electron')
const WebSocket = require("ws")
const judge_ws = new WebSocket.Server({port:1080})
const lightbox_ws = new WebSocket.Server({port:1070})
function createWindow () {
// Create the browser window.
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})
// and load the index.html of the app.
win.loadFile('index.html')
var websocketList = [];
judge_ws.on('connection', function (w) {
w.on( 'message' , function (incoming_data) {
console.log(incoming_data)
lightbox_ws.on('connection', function (ws) {
ws.on('message', function(){
ws.send(incoming_data)
})
})
})
w.on('close', function() {
console.log("Closed")
})
w.send("Hello from port 1080")
})
Этот код открывает два веб-узла. Веб-сокет из порта 1080 прослушивает клиента, который отправит ему некоторые данные.
client1.jade
extends layout
block content
h1 Judge #{judge_id}
script.
const socket = new WebSocket("ws://localhost:1080");
var is_good_lift = function(value) {
socket.send(JSON.stringify({is_good_from_judge_id:Boolean(value)}))
}
// Connection opened
//- socket.addEventListener('open', function (event) {
//- socket.send('Hello Server!');
//- });
socket.addEventListener('message', function (data) {
console.log(data);
});
div(class='btn_container')
button(class='good_lift lift_btn' onclick='is_good_lift("true")') Lift is Good
button(class='bad_lift lift_btn' onclick='is_good_lift("false")') Lift is Bad
клиент 1 отправит данные на главный сервер. js в зависимости от того, что кнопка нажата. Затем main. js откроет другой порт для отправки данных на client2
client2. html
<body>
<h1>Test</h1>
<div class="container">
<span id="judge1" class="dot"></span>
<span id="judge2" class="dot"></span>
<span id="judge3" class="dot"></span>
</div>
</body>
<script>
const socket = new WebSocket("ws://localhost:1070");
// Connection opened
socket.addEventListener('open', function (event) {
socket.send('Recieved from port 1070');
});
socket.addEventListener('message', function (recieved_judge_message) {
dic = JSON.parse(recieved_judge_message.data)
var key = Object.keys(dic)[0];
var x = document.getElementById("judge2");
current_style = x.style.backgroundColor
if(current_style === 'red'){
x.style.backgroundColor = 'white'
} else {x.style.backgroundColor = 'red'}
});
</script>
</html>
Проблема в том, что мой промежуток в клиенте два получает сообщение, но никаких изменений в электронном приложении, если я не обновлю sh приложение вручную.
вот как выглядит мой элемент span в клиенте 2, прежде чем я обновлю sh
After I refresh it turns the correct color
введите описание изображения здесь