Добрый день. Перерыл весь инет - ответа не нашел. Есть библиотека socket.io для node. В linux она работает как положено. Но я работаю в windows(вернее учусь). И там есть небольшой косяк. Мало того, что транспорт определяется не как websocket а pooling, но проблема не в этом. Проблема в том, что при подключении более 1 клиента отправка сообщений через socket.io зависает на 10-20 секунд, а если отправить его повторно то проходит мгновенно новое и предыдущее... Знакома ли Вам такая ситуация и если да - как ее лечить?
мой Сервер:
var io = require('socket.io');
var http = require('http');
var fs = require('fs');
var app = http .createServer(handler);
var io = io.listen(app);
app.listen('80');
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.on('eventtoServer', function (data) {
console.log(data);
io.sockets.emit('eventtoClient', { data: data.msg });
});
socket.on('disconnect', function () {
console.log('user disconnected');
});
});
мой Клиент:
<html>
<head>
<title>Test socket.io</title>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://200.14.1.124:80');
socket.on('eventtoClient', function (data) {
document.getElementById("name").value = data.data;
console.log(data);
});
function send(){
var msgfromclient = document.getElementById("inp").value;
socket.emit('eventtoServer', { msg: msgfromclient });
};
</script>
</head>
<body>
<textarea id="name" rows="8" cols="40"></textarea>
<p></p>
<input type="text" name="text" id="inp" size="20">
<button type="button" name="button" onclick="send()">Отправить</button>
</body>
</html>
ps. Система win10, на winServer12 поведение то же.