Я пытаюсь использовать socket.io для выполнения простой операции в моем решении, построенном с использованием nodejs (express).Цель состоит в том, чтобы попросить пользователя загрузить файл, а когда операция загрузки завершится, отобразить на экране сообщение «файл загружен», не обновляя страницу.Для этого я использую следующий код:
на стороне сервера:
app.post('/fileupload', function(req, res) {
// Upload file stuff here...
mv(oldpath, newpath, function(err) {
if (err) throw err;
io.on('connection', function(socket) {
console.log('sock connected');
socket.emit('uploaded', {msg: 'File ' + files.filetoupload.name + 'uploaded to server'});
});
console.log('moved file');
res.sendFile(index);
});
});
});
и на стороне клиента:
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('uploaded', function (data) {
console.log(data);
$('#messagebox').html(data.msg);
});
</script>
где messagebox - это изначально пустой div вкоторый я хочу отобразить сообщение.
Этот код не работает.Код io.on('connection'...
никогда не вызывается.Я переместил этот код за пределы маршрута приложения с помощью только оператора console.log, чтобы проверить, работает ли он и работает ли он.Я предполагаю, что я использую неправильное событие («соединение») здесь.Но я не могу найти в документации ничего, что позволило бы мне создать объект сокета, используя пользовательское событие.Кто-нибудь может мне помочь?
Если есть другой способ реализовать частичное обновление клиентской страницы на основе кода сервера (т.е. без использования сокета), я тоже открыт для изучения этого.Спасибо.