Как запускать event, когда страница на клиенте загрузилась, nodejs/express?
Добрый день! Скажите пожалуйста как на nodejs/express запускать event когда страница на клиенте полностью загрузилась?
Или как с клиенте дергать этот event ?
Есть какое-то решение для этого?
Надо чтобы запускался сокет сервер так, а то он сейчас запускается еще до того как страница загрузилась.
Спасибо!
Сокет сервер работает независимо от клиентов и http сервера. Его нужно запустить и пусть работает.
А на странице, после события load, нужно запускать клиент, который подключается к уже включенному сокет серверу.
А на странице, после события load, нужно запускать клиент,
и как такое сделать на react/redux?
Насколько понимаю подключения вебсокета должно быть в главном компоненте который уже рендериться на страницу ?! и там я не могу вызвать componentDidMount.
xster, я не разбираюсь в реактах.. Вы же в любом случае пишете где-то js, который будет запускается на странице.
Т.к. вы работаете с DOM (выводите сообщения, и всё такое), то логично дождаться загрузки, прежде чем подключаться к серверу. Обычно это выглядит как-то так:
window.addEventListener('load', function () {
// web-socket client
var socket = new WebSocket("ws://foo.bar:8889/");
socket.onopen = function () {/* ... */};
// ...
});
Сервер в это время включен, и ожидает подключений.
а то он сейчас запускается еще до того как страница загрузилась
Тут у вас что-то пошло не так. Он и должен запускаться не позже http сервероа, который отдал вам эту страницу.
// socketServer.js
var WS = new require('ws');
var socket = new WS.Server({ port: 8889 });
socket.on('connection', function () {/* ... */}
// ...
// httpServer.js
var http = require('http');
var fileServer = new Static.Server('.');
http.createServer(function (req, res) {
fileServer.serve(req, res);
}).listen(8888);
// ...
Запускаем оба файла.
Теперь по http: // site:8888/file.html - получаем html страницу. На ней будет код webSocket клиента.
А сокет сервер здесь: ws://site:8889
И ему без разницы, где и какой мы раздобыли клиент.
А для связи двух серверов я ничего лучше не придумал, как встроить в http сервер - socket клиент.