Я использую библиотеку ws для Node.js.Розетки не имеют никакого смысла?
Я могу написать код, который отправляет данные с моего сервера на мой клиент, публикует обновление даты и времени и закрывает сокет, когда я нажимаю кнопку;
var wss = new WebSocketServer({server: server});
console.log("WebSocket server created");
wss.on('connection', function(socket) {
// SEND DATE AND TIME EVERY SECOND
\t var interval = setInterval(function() {
\t \t socket.send(JSON.stringify(new Date()), function() {});
\t }, 1000);
\t console.log("WebSocket connection opened");
\t socket.on('close', function() {
\t \t console.log("WebSocket connection closed");
\t \t clearInterval(interval);
\t });
});
<html>
<head>
<script>
var host = location.origin.replace(/^http/, 'ws')
var ws = new WebSocket(host);
ws.onmessage = function (event) {
var li = document.createElement('li');
li.innerHTML = JSON.parse(event.data);
document.querySelector('#pings').appendChild(li);
};
function pressed() {
// CLOSE STREAM
ws.close();
}
</script>
</head>
<body>
<h1>Pings</h1>
<form name="form1" method="post" action="">
<input type="button" value="Call server" onClick="pressed()">
<ul id='pings'></ul>
</body>
</html>
Но по какой-то причине я просто не могу понять способ отправить данные обратно домой на сервер и вызовите консоль для печати «нажатой !» или что-то еще. Это своего рода ограничение, потому что вместо двунаправленного, похоже, что сокет является однонаправленным потоком.
Вроде так;
var wss = new WebSocketServer({server: server});
console.log("WebSocket server created");
wss.on('connection', function(socket) {
// SEND DATE AND TIME EVERY SECOND
\t var interval = setInterval(function() {
\t \t socket.send(JSON.stringify(new Date()), function() {});
\t }, 1000);
\t console.log("WebSocket connection opened");
// LOOK FOR 'pressed' BEING SENT
\t socket.on('pressed', function() {
\t \t console.log("Pressed!");
\t \t socket.close();
\t });
\t socket.on('close', function() {
\t \t console.log("WebSocket connection closed");
\t \t clearInterval(interval);
\t });
});
<html>
<head>
<script>
var host = location.origin.replace(/^http/, 'ws')
var ws = new WebSocket(host);
ws.onmessage = function (event) {
var li = document.createElement('li');
li.innerHTML = JSON.parse(event.data);
document.querySelector('#pings').appendChild(li);
};
// SEND 'pressed' TO SERVER
function pressed() {
ws.send('pressed');
}
</script>
</head>
<body>
<h1>Pings</h1>
<form name="form1" method="post" action="">
<input type="button" value="Call server" onClick="pressed()">
<ul id='pings'></ul>
</body>
</html>
Что я упускаю, только начал изучать розетки, чувствует, как я пытаюсь рыть через кирпичную стену с помощью ватной ложки.
Действительно, кто-то решает downvote неправильного представления о взаимодействии данных в сокетах? Legit. – ARMATAV