Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (4) [1] 2 3 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Сокеты
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




Всем привет! Пишу сайт, основанный, практически, на онлайн чатах, постоянных уведомлениях поступаемых клиенту от сервера и т.д. Классический способом, с насилованием сервера с помощью AJAX запросов с определенным интервалом слишком уж, как выше упомянул, насильственный для сервера. Но тут я наткнулся на технологию вебсокетов. Да, да, прошло уже года 4 с того момента, как я начал изучать PHP и я только сейчас пронюхал про эти соккеты :angry: Хотя, я и раньше про них слышал, про их, так сказать, принцип действия. Вчера заглянул в статью на хабре(КЛАЦ), якобы 'соккеты с нуля для нубоврей'. Я бы сказал, там не так уж все просто описано. В целом, принцип мне понятен. Как я понял, то файл сервера, который принимает все соккет запросы должен выполнятся постоянно. Только вот как это сделать? Постоянно открыть этот файл в браузере? Нашел в одной статейке вот такой вот вариант решения этой проблемы:
if (strtoupper(substr(PHP_OS,0,3)) === 'WIN') {  //Действия под виндой
exec("w:\usr\local\php5\php.exe -q w:\home\localhost\www\ws\ws.php");
} else exec("php -q ws.php &");


Думаю, вы поняли что делает этот кусок кода :lol: А теперь вопрос: годится ли такой такой вариант реализации сервера-соккета? Не слишком ли он грубый?

Есть еще вопросик. Допусти я создал этот соккет-сервер и он полноценно принимает и отдает данные. Теперь нужно с клиентом разобраться. Как посылать запросы клиенту? На сколько мне известно, то есть и в JS реализация соккетов. Или лучше посылать AJAX запрос на PHP файл, который уже и будет принимать и отдавать файлы? Вообще это для меня все так муторно. Как он работает. Сам принцип работы не понятен. Что то, куда то, через что то посылает. Принимает непонятно как. Примеров в интернете вразумительных нет. Только оффтопики на форумах, и то обсуждают непонятно что. Кто нибудь может поделится ссылкой, на статью о том, где создают свой собственный чат на соккетах с подробным объяснением принципа работы всех функций?

На офф сайте описание всех функций про соккеты написаны на английском языке. Т.к. я его не знаю, это уже проблема для меня. Гугл транслейтер в *опу <_<

ИМХО На форуме я не видел(если плохо искал, ткните носом) статьи про соккеты. Именно обучающей, как это заведено в каждом разделе. Статейки от знатоков. Было бы неплохо написать такую :D
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата
А теперь вопрос: годится ли такой такой вариант реализации сервера-соккета? Не слишком ли он грубый?


Это лишь запуск. А с реализацией че там у тебя пока не ясно.
Думаю запуск и "обслуживание" нужно оставлять админам. Они как минимум навесят мониторинг какой-нибудь: если упадет – то что бы рестартонулся, ну и тд.

Вообще мне кажется, что писать самому реализацию WS не самая оптимальная идея.
Вроде бы сейчас самая модная реализация WS под PHP это Ratchet.
Вот туториал как сделать Hello world на нем: http://socketo.me/docs/hello-world .
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




Guest спасибо конечно, но нет! Я не одобряю готовые решения, которые могу сделать сам, да и время позволяет. Хочу сам знать все тонкости
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 240
Пользователь №: 26735
На форуме: 5 лет, 10 месяцев, 8 дней
Карма: 15




Цитата
Вообще это для меня все так муторно. Как он работает. Сам принцип работы не понятен. Что то, куда то, через что то посылает.

Дружище, ты бы почитал как работает tcp/ip протокол, тогда стало бы понятнее.

Типичное сетевое соединение как правило состоит из двух сокетов - это серверный сокет и клиентский сокет. Когда стоит задача написать программу-сервер, то нужно:

1. Создать сокет.
2. Указать сокету на каком порту ему слушать.
3. Начать слушать порт.
4. Начать принимать соединения на сокете.
5. Когда пришло новое соединение его можно сохранить в массив сокетов. Затем сервер может писать любые данные в любой клиентский сокет. Также сервер может читать данные из своего серверного сокета чтобы получать данные от клиентов.

Для программы-клиента примерно тоже самое.
1. Создать сокет
2. Используя созданный сокет установить соединение с серверным сокетом.
3. Писать в сокет все что хочешь.
4. Читать из сокета то, что в него запишет сервер.

Наконец, в конечном итоге, любая сторона может разорвать соединение закрыв сокет.

Вот и всё в простейшем варианте. Никакой магии. Так работает и http протокол и websocket протокол. Просто для http нужно посылать в сокет-соединение сообщения в определенном формате (ну ты знаешь headers, body). Для websocket же нужно выполнить handshake (рукопожатие) точно также отправив в сокет сообщение в определенном формате и если браузер получит от сервера ответ, который его устраивает, то на стороне браузера можно будет читать/писать из/в этот сокет.

А теперь, чтобы тебе реализовать websocket протокол, то как минимум тебе нужно сначало прочитать документ по websocket протоколу. Но так как ты не знаешь английского, у тебя такой возможности нет и поэтому единственный выход для тебя это взять уже что-то готовое, как тебе здесь уже посоветовали Ratchet в php или ws/socket.io/sockjs и т.д. в nodejs или еще что-нибудь готовое в любом другом языке программирования, который дружит с сетью.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 240
Пользователь №: 26735
На форуме: 5 лет, 10 месяцев, 8 дней
Карма: 15




А черт, вот засада, документация по всем этим проектам тоже на английском user posted image
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11818
Пользователь №: 23195
На форуме: 6 лет, 5 месяцев, 22 дня
Карма: 429

Трезвый :
7 лет, 4 месяца, 22 дня


Цитата (N0ob @ 6.04.2016 - 20:05)
Guest спасибо конечно, но нет! Я не одобряю готовые решения, которые могу сделать сам, да и время позволяет. Хочу сам знать все тонкости

Интересно, как ты собираешься писать реализацию, если спецификация протокола на английском laugh.gif

PS. Сантехник выше всё четко расписал smile.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




Invis1ble я думаю, и на русском тоже есть. А если нет, то можно будет этот момент пока незаметно обойти)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




В целом, с принципом TCP/IP я разобрался, в теории. И охватил еще и UPD. Теоритические различия не большие. Осталось все это как то на практике опробовать. На вебсокетах, наверное, и буду "щупать")
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2732
Пользователь №: 24406
На форуме: 6 лет, 2 месяца, 29 дней
Карма: 176




Цитата (N0ob @ 7.04.2016 - 15:47)
Теоритические различия не большие

Как сказать, UDP может растерять пакеты при отправке...


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1386
Пользователь №: 28976
На форуме: 5 лет, 5 месяцев, 17 дней
Карма: 78




N0ob
В UDP нет подтверждения доставки. Тут как в анекдоте.
Цитата
Идут стрельбы. Дали автоматы, патроны, показали куда стрелять.
Админ отстрелялся, подводят итоги. Мишень админа чистая.
Командир: - ?.
Админ, проверяя автомат: - С моей стороны пули вылетели. Проблемы у вас.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




T1grOK этого не знал. Но смысл у них один и тот же, только принцип разный. TCP использует соединение с конкретным клиентом/сервером с подтверждением, а UDP "раскидывается" пакетами на лево и на право без взаимного согласия. Только вот не знаю, где уместен UDP? В статье написано, что его используют в DNS сервере. Не знаю, в чем его плюс в данной сфере? Мб он затрачивает меньше ресурсов и времени?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2732
Пользователь №: 24406
На форуме: 6 лет, 2 месяца, 29 дней
Карма: 176




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


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




T1grOK можно ли эту "сборку" впихнуть на сайт?) Вместо вебсокетов на TCP/IP
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
T1grOK  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2732
Пользователь №: 24406
На форуме: 6 лет, 2 месяца, 29 дней
Карма: 176




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

Чем WS не угодили то?


--------------------
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
N0ob  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 798
Пользователь №: 37078
На форуме: 3 года, 9 месяцев, 13 дней
Карма: 13




T1grOK та не, с ними все нормально. Спросил чисто из интереса smile.gif smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (4) [1] 2 3 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса