LINUX.ORG.RU

Pure websocket

 


0

2

А может для Single Page Application взять да и подзабить на все эти REST интерфейсы, написать клиентский и серверный диспетчеры типов сообщений и все гонять JSONом через веб-сокет.

Абстракция предлагается следующая. Клиент создает нечто названное «stream» у которого есть ID. Он сразу регистрирует событие onStreamMessage. Тоесть в классическом понимании - это не коллбек, это множество инвокаций коллбеков если сервер отправит много сообщений с этим ID. Получаем абстракцию для простого и привычного нам запроса, но и бесконечный стриминг ответов, таких как чат или push нотификации.

Большим плюсом есть фоллбек на Server Side Events прозрачно для пользователя. Тогда отправка будет идти таки через REST. Socket.io? Socket.io

Плюс heartbeats с нотификацией смерти стрима, ну и raw data messaging между браузерами клиентов через WebRTC согласно такой же абстракции.

А ведь такая же вещь может иметь место и на сервере, но о это нужно более подробно подумать.

Среди минусов вижу отсутствие HTTP кеширования и говнобраузеры.

Вот скажите, такая абстракция разве не была бы удобнее для программирования Web 100500.0

var myChats = {};

client.startStream("Hi there", function(id){
	myChats[id] = "Hurray";

	client.onStreamMessage(function(msg){
		console.log(msg);
		return false; // kill the callback, just a single message
	})
});

client.query("Hi there", function(msg){ // same thing, but you don't need to know an id
	console.log(msg);
})

client.query("Lets chat", function(msg){
	mychat.items.push(msg.text);
        return true;
});
★★★★★

Последнее исправление: vertexua (всего исправлений: 4)

Для вебсокетов нужен постоянно висящий коннект, для чего-либо нагруженнее вебчатика не взлетит.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

Они и так же висят на keep-alive, хоть там и можно скинуть. В целом говоря сейчас это не проблема для любого event-driven сервака

vertexua ★★★★★
() автор топика

Для низконагруженных сервисов (а еще лучше — веб-морд с единоличным доступом) очень даже взлетит. Для нагруженных — нет.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от fish_ka

Теоретические. То что я играюсь с хеллоуворлдами дома отношения к этому не имеет, я постоянно то фреймворки прототипирую, то всякие распределенные алгоритмы.

vertexua ★★★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Мимо. Ты о дескрипторах или портах? Дескрипторы - не проблема, все равно дело не в одной машине. Порты - собственно один только регистрируется ))

vertexua ★★★★★
() автор топика
Ответ на: комментарий от val-amart

Да я уже нагуглил давно. Эти костыли исчезли вместе с x86

Eddy_Em ☆☆☆☆☆
()

Вполне себе взлетит, и поверх httprequest с нормальным long polling всё хорошо будет работать. Только вот вопрос - для кого взлетит? Для веб разработчиков - нет, никогда. Потому что веб это веб, набор прикреплённых друг к другу изолентой плохо совместимых вещей и народ это поддерживает. Посчитай хотя бы количество способов рисования: svg, на тегах, canvas, opengl и это вероятно не всё)

Та же бадяга с транспортами. Идею и подобные ей можно использовать, но только кем-нибудь, а не всеми. Небольшой хорошо организованной группой, где внутри все договорятся воспринимать веб не как веб, а как api и будут писать нормальный софт:)

ixrws ★★★
()
Ответ на: комментарий от vertexua

Очень даже нужен. Но не всегда. Таки веб — это по большей части статика. А статику лучше в виде html-файлов хранить. И проще отсылать их клиенту при помощи существующих веб-серверов, а не самопала.

А вот в некоторых случаях действительно самый лучший вариант — вебсокеты. Особенно когда нужно что-то похожее на realtime (реализовать realtime при помощи XHR вообще не вариант).

Однако! Учитывая то, что 99% юзверей и ламеров сидят на всяких древнейших мастдайках и вместо браузера используют IE6, затея взлетит лишь в крайне специфических случаях (скажем, веб-морда системы управления ядерным реактором).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от vertexua

Скорее так - новый велик народом может быть даже будет использован, но только вместе с другими великами, обязательно тщательно перемешав.

Вот смотри, есть sockjs, socketio и ещё туча всяких куда более интересных вещей, типа hook.io, и ? Максимум, на что народ хватает, это использовать их для чатиков, как буд-то просто переписать сайт в виде приложения нельзя. И народ не смущает то, что оперировать одновременно тегами, виджетами на js, запрашивать html через httprequest и тут же использовать websockets для чатика намного сложнее, чем просто взять, выпрямить руки, заюзать набор виджетов, логику просто писать на js, а для взаимодействия websockets.

PS: мне сабж понравился, но, открой какой-нибудь сайтег, глянь исходник в браузере и ужаснись!:)

ixrws ★★★
()
Ответ на: комментарий от Eddy_Em

Вот б**ь об этом, я писал выше))) Какая нахрен статика, а чо, слать её в json, и виджетами выводить, хранить почти также, не, нельзя? Проще может быть, а писать это всё, проще? Сочетать?

И вся эта история про то, что ие6, тоже фигня, на нём нормально работает xhr и jsonp и если не слать тыщу запросов, работает очень быстро. Если не слать краткие сообщения, а компоновать в один запрос несколько сообщений, то вообще летает.

Тут всё просто, так уж сложилось, что веб, это что-то вроде 1с, хотя может не только веб, а весь мир:)

ixrws ★★★
()
Ответ на: комментарий от ixrws

Какая нахрен статика

Итить-колотить! А кэшировать поисковики как это будут?

В любом случае придется поддерживать 2 вида отображения сайтов: для поисковых демонов выдавать псевдостатику, а для пользователей уже рисовать через вебсокеты динамику. Но это годится, опять-таки, лишь для чатиков вроде ЛОРа или фконтактега. Если у тебя тупо магазин или рекламный проспект, то никакой динамики тут быть не может! Там не нужны вебсокеты.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Я о статике не говорю, это по дефолту. Я о коммуникации

vertexua ★★★★★
() автор топика
Ответ на: комментарий от mix_mix

Не, это какой-то монстр. Я например вообще о доставке assets не упоминал, а тут тебе и CSS, HTML и темплейты какие-то

vertexua ★★★★★
() автор топика

в этом контексте мне vert.x кажется интересным. Несколько бекенд сервисов и брайзеры общаются сообщениями по шине.

bismi
()
Ответ на: комментарий от vertexua

нет, js-клиент на браузере имеет доступ к шине, соответственно может обмениваться сообщениями с любым сервисом и клиентом подключенным к шине.

короче можно слать сообщения с браузера на браузер.

bismi
()
Ответ на: комментарий от vertexua

А в распределенной среде?

сервисы на разных машинах подключены к шине. если я тебя правильно понял.

ты же джавист вроде, hazelcast должно тебе что-то сказать.

PS. я сам питонщег, но в последнее время смотрю на жава технологии (vert.x, OrientDB, Clojure)

bismi
()
Ответ на: комментарий от bismi

Хм, что то я не уверен в способе масштабирования хазеля, но нужно глянуть

vertexua ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.