Какие выбрать технологии для чата?

Укажите, пожалуйста, в каком направлении двигаться .
Планирую сделать сайт с анонимным чатом, по типу чатвдвоем.
Сейчас учу HTML,CSS, Jscript. Ничего другое пока не изучал. В программировании пока ноль.
Пока понял только то что нужна асинхронная обработка данных на сервере.

Возникли следующие вопросы :
1. Какой сервер выбрать, ведь запросов клиентA-сервер-клиентB предполагается очень много?
Я имею ввиду Apache, nginx, php-fpm итд. ( Как это все работает - понимаю плохо )
2. Какую технологию/связку или протоколы выбрать собственно для передачи сообщений?
WebSocket, Ajax, итд. ( тоже не знаю что и как )
3. С помощью чего можно сделать вышеупомянутую асинхронность?
4. Есть ли технологии/протоколы передачи данных клиентА - клиентВ , т.е из браузера в браузер, минуя сервер?

Прошу простить, если задаю не те вопросы. Спасибо всем кто ответит.
  • Вопрос задан
  • 3148 просмотров
Пригласить эксперта
Ответы на вопрос 6
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
@yernende
К остальным ответам добавлю, что тебе нужен не JScript, а javascript. JScript - это реализация от microsoft, и применяется он совершенно в другом месте. На веб-страницах используется javascript.
Node.js - это серверная реализация javascript. Я бы тоже его посоветовал - во-первых, понадобится учить меньше языков (ну, как, много языков все равно знать надо, но на первых порах хотя б не будешь путаться), во-вторых - для этой роли он отлично подходит. Как и питон, но у него синтаксис от js отличается весьма и весьма, что может вызвать путаницу. Собственно для коммуникации есть два варианта - либо чистый WebSocket, либо socket.io. Socket.io - это модуль для node.js, который, используя лучшую поддерживаемую браузером технологию коммуникации, обеспечивает полнодуплексную связь. Если поддерживается WebSocket - использует именно его, не поддерживается - использует костыли.
Ссылки по теме:
learn.javascript.ru/intro - введение в javascript. Прочитать стоит обязательно.
learn.javascript.ru/websockets - о вебсокетах (там же есть пример чата).
learn.javascript.ru/nodejs-screencast - скринкаст по Node.js
socket.io - о socket.io, в демках есть пример чата с исходниками.
Ответ написан
Комментировать
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Ваша потребность относится к WebRTC. К сожалению, поддерживают технологию только Firefox, Chrome, Opera (и то потому, что перешла на движок webkit). Поэтому без сервера практически не обойтись.

WebRTC #1 — Знакомимся
Как мы делали сервис на WebRTC

Поэтому вероятнее всего, придётся использовать WebSocket — всё же лучше, чем бесконечные клиентские AJAX-запросы к серверу. Готовых решений навалом.
Ответ написан
Комментировать
VaaL2004
@VaaL2004
Рекомендую связку Node.js, socket.io и redis.
Node.js выступит в роли веб-сервера и даст асинхронность
Socket.io даст кросс-браузерное общение между клиентом и сервером и плюс ко всему он умеет адресовать сообщения конкретным пользователям.
Redis в вашем случае будет неплох в виде базы чата (я, так понимаю, что долговременного хранения не предвидится)

Если нужна помощь, пишите на почту (xl1034@gmail.com), обменяемся контактными данными
Ответ написан
Комментировать
Я бы вам присоветовал асинхронный веб-сервер Tornado, ну и надо к нему немножко Python'а знать.

Вот кажется хороший пример: https://code-live.ru/post/chat-with-tornado-backbo... который вам можно распробовать и доработать.
Ответ написан
Комментировать
@Levhav
Возьмусь за разработку проектов любой сложности.
Если у вас будет много запросов, что вы и планируете, то тут либо изучать node.js либо есть ещё вариант использовать готовый комет сервер и общаться с ним через api.

То есть к примеру у вас обычный php сайт а всё работу и нагрузку по поддержанию постоянно открытых соединений по WebSocket берёт на себя комет сервер.

С вашим опытом думаю будет целесообразно использовать комет сервер представляемый по saas модели, это значительно ускорит и упростит вам написания вашего проекта

Вот несколько comet сервисов.
[Ru] comet-server.ru/menu_id/10

[En] https://www.tambur.io/pricing
[En] pusher.com/pricing
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы