Моя цель - создать приложение для чата, похожее на WhatsApp.
Насколько я понимаю, socket.io — это коммуникационная библиотека в реальном времени, написанная на javascript, и она очень проста в использовании.
Например
// Serverside
io.on('connection', function(socket) {
socket.on('chat', function(msg) {
io.emit('chat', msg);
});
});
// ClientSide (Using jquery)
var socket = io();
$('form').submit(function(){
socket.emit('chat', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat', function(msg){
$('#messages').append($('<li>').text(msg));
});
1) мне всегда нужно запускать io.on('connection')
, чтобы использовать функцию реального времени, или я мог бы просто начать использовать вместо этого объект socket.on
? например у меня есть маршрут
app.post('/postSomething', function(req, res) {
// Do i need to start an io.on or socket.on here?
});
потому что я хочу, чтобы функция реального времени прослушивалась только на определенном маршруте.
2) Redis — это библиотека структур данных, которая обрабатывает pub/sub, зачем нам использовать механизм pub/sub? Я прочитал много статей, но не мог понять концепцию. Пример статьи http://ejosh.co/de/2015/01/node-js-socket-io-and-redis-intermediate-tutorial-server-side/
например код ниже
// Do i need redis for this, if so why? is it for caching purposes?
// Where does redis fit in this code?
var redis = require("redis");
var client = redis.createClient();
io.on('connection', function(socket) {
socket.on('chat', function(msg) {
io.emit('chat', msg);
});
});
3) Просто интересно, зачем мне нужен nginx для масштабирования приложения node.js? я нашел этот ответ stackoverflow: Стратегия реализации масштабируемого чат-сервера
В нем что-то говорится о балансировке нагрузки, читал это в Интернете и тоже не мог понять концепцию.
До сих пор я имел дело только с node.js, простым CRUD-приложением mongoose, но я готов очень усердно работать, если вы, ребята, поделитесь некоторыми своими знаниями и некоторыми полезными ресурсами, чтобы я мог углубить свои знания обо всех этих технологии.
Ваше здоровье!