this.messages = wsService.connect();
здесь в messages запишется Subject. Когда я пишу messages.next('Блаблабла'), то вызывается метод next вот такой
const observer = {
next: (data: Object) => { // next отправляет данные на сервер
console.log('Отправка данных на сервер...');
this.socket.emit('message', JSON.stringify(data));
},
};
который и отправляет данные на сервер.
А вот эта конструкция
const observable = new Observable(observer => {
this.socket.on('message', (data) => {
console.log("Данные пришли с сервера");
observer.next(data); // Я вызываю next, но данные отправляются не на сервер, а подписчику
})
});
срабатывает когда у меня где-то в коде есть messages.subscribe().
То есть в Subject можно как писать новые значения, так и подписываться на него. В первом случае вызывается метод next объекта Observer (первый аргумент в методе Subject.create), во втором - определенная мной Observable (второй аргумент в методе Subject.create).