Разработка мессенджера
От: MikelSV http://www.centerix.ru
Дата: 08.05.15 20:34
Оценка: 2 (2) :)
Приветствую.
Пишу мессенджер, ближайший аналог — Телеграмм. Спустя две недели ударных разработок получилась версия позволяющая посылать и принимать сообщения и в общем-то все. Альфа версия доступна для тестирования тут: https://plus.google.com/u/0/communities/102545024447070118113 (Требуется добавиться в группу, чтобы гугл дал доступ к тестированию.)

Несомненно, это большой шаг для человека и никакой для человечества.


Подскажите по следующим вопросам:

1. Текущая версия работает через HTTP. Запрос к серверу каждые несколько секунд. Я понимаю, что это откровенно хреновая реализация. Подскажите, как правильно реализовать логику на сервере. Понятно, что должно быть реализовано постоянное подключение. Но я не до конца понимаю, как с этим работать. Сейчас: запрос -> apache -> php -> mysql -> ответ. Нужно: запрос -> сервер подписывает сокет на события и высылает их по мере появления. Это можно реализовать на apache + php или нужно брать/писать сервер?
Как организовывается структура серверов для высоконагруженных мессенджеров? Мне не хватает базового понимания, простейшей логики, на которой все основывается. Сейчас ко мне приходит понимание, как должно работать: после подключения клиента сервер подписывает его на события. При событии в сокет высылается соответствующее сообщение. Соект идентифицируется по id пользователя. Плюс хеш таблицу, для быстрого поиска. Как организовывается взаимодействие, если серверов два?

1.1 Телеграмм обещает работать через UDP.
Это вообще реально: на мобильное соединение и UDP? Я тоже такое хочу. )

2. Как организовать защиту данных при передаче через сеть?
Я игрался с mitm прокси, достаточно одной таблетки^W^W сертификата в браузер. Не стоит ли в этом случае вшить RSA ключи в программу и работать через них? Разница в шифровании никакой, при попытке перенаправления соединения выходит легкий облом.

3. Как организовывать приватные чаты? Теория понятна, обменяться RSA ключами, договориться о ключе AES. Как на практике доказать, что чат не может прослушиваться, учитывая, что может прослушиваться и модифицироваться интернет канал(mitm), а так же сам сервер мессенджера давно и плотно в надежных руках.

4. Где искать пользователей?
В пространстве мессенджера жизни нет, и никому особо такое пространство не нужно. Пишу порт на xmpp, дабы подцепить пространство джаббера с хоть какими-то пользователями. Предложу им мобильный клиент, через который можно сидеть в джаббере.
Где еще брать пользователей?

5. Буду благодарен за объективную критику приложения.
Я знаю, что дизайн никакой.
Я знаю, что функционала чуть меньше чем нет.
Я знаю, что такое приложение никому не нужно.
Я даже могу догадываться, что его стоит выкинуть.
Нет, я не перестану его писать.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re: Разработка мессенджера
От: c-smile Канада http://terrainformatica.com
Дата: 08.05.15 22:17
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>Подскажите по следующим вопросам:


WebSockets — это дуплекс соединение. http://www.html5rocks.com/en/tutorials/websockets/basics/
Работает поверх http/https ( вернее переключает socket по http запроса на дуплекс режим ).

Рекомендую глянуть на Sciter в качестве клиента. Получишь сразу Win, Mac и Linux из одного code base.
Re: Разработка мессенджера
От: Философ Ад http://vk.com/id10256428
Дата: 08.05.15 22:37
Оценка: +1
а зачем здесь http?
чем irc или jabber не устроил?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: Разработка мессенджера
От: MikelSV http://www.centerix.ru
Дата: 08.05.15 23:56
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>а зачем здесь http?

Ф>чем irc или jabber не устроил?

http здесь при том, что он протокол. С irc я не работал. После внедрения протокола xmpp проект можно закрывать.
В конечном счете будет TCP + свой протокол + обертка/модификация для websockets.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re: Разработка мессенджера
От: neFormal Россия  
Дата: 09.05.15 09:39
Оценка: :))
Здравствуйте, MikelSV, Вы писали:

MSV>5. Буду благодарен за объективную критику приложения.

MSV>Я знаю, что дизайн никакой.
MSV>Я знаю, что функционала чуть меньше чем нет.
MSV>Я знаю, что такое приложение никому не нужно.
MSV>Я даже могу догадываться, что его стоит выкинуть.
MSV>Нет, я не перестану его писать.

я код видел.
лучше откопать стюардессу.
...coding for chaos...
Re: Разработка мессенджера
От: btn1  
Дата: 09.05.15 17:59
Оценка: -1
Здравствуйте, MikelSV, Вы писали:

MSV>Несомненно, это большой шаг для человека и никакой для человечества.


Вот тут пошутил удачно!

MSV>5. Буду благодарен за объективную критику приложения.


Объективно — "не нужно", что после этого обсуждать??

MSV>Я знаю, что такое приложение никому не нужно.

MSV>Нет, я не перестану его писать.

эээ... может, не стоит с такой логикой лезть в программирование? Это упорство достойно Церетели, Васильевой, но никак не джигита.
Если тебе нужна практика в конкретном направлении, вовсе не обязательно распаляться на другие. Напиши простейший сетевой обмен и успокойся — практика уже есть.

MSV>4. Где искать пользователей?


Т.е. написав откровенное гуано, ты всё равно наивно надеешься занять какую-то нишу? Мешают лавры Whatsup? Уверяю, время "выскочек-миллионеров" никогда даже не наступало, это всё сказки.
Re[2]: Разработка мессенджера
От: MikelSV http://www.centerix.ru
Дата: 09.05.15 21:51
Оценка:
Здравствуйте, btn1, Вы писали:

B>Здравствуйте, MikelSV, Вы писали:


MSV>>Несомненно, это большой шаг для человека и никакой для человечества.


B> Вот тут пошутил удачно!


Это была всего лишь констатация факта.

MSV>>5. Буду благодарен за объективную критику приложения.


B>Объективно — "не нужно", что после этого обсуждать??


Не нужно — это логика обывателя, у него есть продукт, новые продукты не нужны. Если бы я реагировал на все ненужно, так бы ничего и не написал за всю свою жизнь. Так что комментарии в стиле "не нужно" не нужны сами по себе.

MSV>>Я знаю, что такое приложение никому не нужно.

MSV>>Нет, я не перестану его писать.

B>эээ... может, не стоит с такой логикой лезть в программирование? Это упорство достойно Церетели, Васильевой, но никак не джигита.

B>Если тебе нужна практика в конкретном направлении, вовсе не обязательно распаляться на другие. Напиши простейший сетевой обмен и успокойся — практика уже есть.

Под ненужностью имелось в виду то состояние, в котором приложение пребывает сейчас. Моя задача сделать так, чтобы стало нужно.
Если мне и нужна практика, то в нормальном высоконагруженном приложении. Причем весь проект будет базироваться на моем личном коде.
Я разрабатываю это приложение по тому, что мне требуется некий функционал, которого нет в других приложениях, но реализовать его я смогу только после завершения разработки мессенджера.

MSV>>4. Где искать пользователей?


B>Т.е. написав откровенное гуано, ты всё равно наивно надеешься занять какую-то нишу? Мешают лавры Whatsup? Уверяю, время "выскочек-миллионеров" никогда даже не наступало, это всё сказки.

Что именно вам не понравилось? Интерфейс? Да, им нужно заниматься отдельно. Протокол? Понял свою ошибку, перехожу на websockets. Функциональность? Она будет, требуется время. Все упирается во время. Текущая версия выложена для того, чтобы рассказать о проекте. К сожалению не в моих силах за две недели разработки выпустить полноценное приложение.
Я надеюсь найти своих пользователей.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re: Разработка мессенджера
От: vitaly_spb Россия  
Дата: 14.05.15 14:21
Оценка:
MSV>4. Где искать пользователей?
MSV>В пространстве мессенджера жизни нет, и никому особо такое пространство не нужно. Пишу порт на xmpp, дабы подцепить пространство джаббера с хоть какими-то пользователями. Предложу им мобильный клиент, через который можно сидеть в джаббере.
MSV>Где еще брать пользователей?

Нужно чем-то выделяться, какая-то инновация. Телеграм завоевал свою долю рынка на "безопасном" протоколе. WhatApp были первые, рекламируя переход с платных СМС на бесплатные сообщения через инет. Slack выделились как мессенджер для командной работы. Какой-то восточный мессенджер, корейский или японский, выделился на том, что сделал хорошую поддержку смайликов — чтобы слать их вместо типичных сообщений. Когда определишься чем выделяться, будет понятна аудитория. Дальше реклама + word of mouth.

MSV>Я знаю, что функционала чуть меньше чем нет.

MSV>Я знаю, что такое приложение никому не нужно.
MSV>Я даже могу догадываться, что его стоит выкинуть.
MSV>Нет, я не перестану его писать.

Если доведешь до какого-то разумного состояния — обратись в assembly.com, может быть там найдешь желающих поучаствовать.
...Ei incumbit probatio, qui dicit, non qui negat...
Re: Разработка мессенджера
От: DemonsInside  
Дата: 14.05.15 16:39
Оценка: +1
Здравствуйте, MikelSV, Вы писали:

MSV>1. Текущая версия работает через HTTP. Запрос к серверу каждые несколько секунд. Я понимаю, что это откровенно хреновая реализация. Подскажите, как правильно реализовать логику на сервере. Понятно, что должно быть реализовано постоянное подключение. Но я не до конца понимаю, как с этим работать. Сейчас: запрос -> apache -> php -> mysql -> ответ. Нужно: запрос -> сервер подписывает сокет на события и высылает их по мере появления. Это можно реализовать на apache + php или нужно брать/писать сервер?


Apache не подойдет, он на каждое соединение поднимает по процессу (prefork) или процессы с потоками (worker). Это очень ресурсоемко и при большом количестве клиентов вы исчерпаете ресурсы сервера очень быстро.

В качестве альтернативы можно взять что-то событийно-ориентированное, нынче модно использовать NodeJS. Я лично сижу на Tornado/Python. Кстати, серверная часть WhatsApp'а написана на Erlang'е.

В качестве протокола я бы посоветовал XMPP. Отдельно нужно думать о передаче изображений/аудио/видео.

MSV>Как организовывается структура серверов для высоконагруженных мессенджеров? Мне не хватает базового понимания, простейшей логики, на которой все основывается. Сейчас ко мне приходит понимание, как должно работать: после подключения клиента сервер подписывает его на события. При событии в сокет высылается соответствующее сообщение. Соект идентифицируется по id пользователя. Плюс хеш таблицу, для быстрого поиска. Как организовывается взаимодействие, если серверов два?


Я бы не советовал сразу ориентироваться на высокие нагрузки. Это очень сильно усложнит задачу.

MSV>1.1 Телеграмм обещает работать через UDP.

MSV>Это вообще реально: на мобильное соединение и UDP? Я тоже такое хочу. )

Реально.

MSV>4. Где искать пользователей?

MSV>В пространстве мессенджера жизни нет, и никому особо такое пространство не нужно. Пишу порт на xmpp, дабы подцепить пространство джаббера с хоть какими-то пользователями. Предложу им мобильный клиент, через который можно сидеть в джаббере.
MSV>Где еще брать пользователей?

Это самая сложная задача. По сравнению с ней, все технические задачи просто ничто.

MSV>Нет, я не перестану его писать.


В любом случае допиши, получишь очень полезные скиллы. А это самое главное.
Re: Разработка мессенджера
От: кубик  
Дата: 18.05.15 15:51
Оценка:
Несомненно, это большой шаг для человека и никакой для человечества.

Re[2]: Разработка мессенджера
От: MikelSV http://www.centerix.ru
Дата: 19.05.15 10:22
Оценка:
Здравствуйте, DemonsInside, Вы писали:

DI>Apache не подойдет, он на каждое соединение поднимает по процессу (prefork) или процессы с потоками (worker). Это очень ресурсоемко и при большом количестве клиентов вы исчерпаете ресурсы сервера очень быстро.

Вот блин, а я то думал в апаче все оптимально.

DI>В качестве альтернативы можно взять что-то событийно-ориентированное, нынче модно использовать NodeJS. Я лично сижу на Tornado/Python. Кстати, серверная часть WhatsApp'а написана на Erlang'е.

У меня уже свой сервер на с++.

DI>В качестве протокола я бы посоветовал XMPP. Отдельно нужно думать о передаче изображений/аудио/видео.

XMPP — это смерть для проекта. Сейчас у меня websockets + json с последующим переходом на свой бинарный протокол.
Римское правило. Тот, кто говорит, что Это не может быть сделано, никогда не должен мешать тому, кто Это делает.
Осень, ну вы поняли.
Зачем еще один код? А человек?
Re[3]: Разработка мессенджера
От: Privalov  
Дата: 19.05.15 10:35
Оценка:
Здравствуйте, MikelSV, Вы писали:

DI>>В качестве протокола я бы посоветовал XMPP. Отдельно нужно думать о передаче изображений/аудио/видео.

MSV>XMPP — это смерть для проекта. Сейчас у меня websockets + json с последующим переходом на свой бинарный протокол.

Свой бинарный протокол — не думаю, что это хорошая идея.
Re: Разработка мессенджера
От: Skorodum Россия  
Дата: 19.05.15 11:56
Оценка:
Здравствуйте, MikelSV, Вы писали:

MSV>5. Буду благодарен за объективную критику приложения.

MSV>Я знаю, что дизайн никакой.
MSV>Я знаю, что функционала чуть меньше чем нет.
MSV>Я знаю, что такое приложение никому не нужно.
MSV>Я даже могу догадываться, что его стоит выкинуть.
MSV>Нет, я не перестану его писать.

Если есть желание и время — обязательно пиши. Просто для своей совести.
Re[3]: Разработка мессенджера
От: Eugeny__ Украина  
Дата: 04.06.15 13:34
Оценка:
Здравствуйте, MikelSV, Вы писали:


MSV>XMPP — это смерть для проекта. Сейчас у меня websockets + json с последующим переходом на свой бинарный протокол.


Если уж так хочешь бинарный протокол, рекомендую глянуть на google protobuf в качестве реализации. Штука крайне легковесная, при этом жизнь тебе упростит значительно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.