[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сокеты
Страницы: 1, 2, 3, 4
N0ob
Всем привет! Пишу сайт, основанный, практически, на онлайн чатах, постоянных уведомлениях поступаемых клиенту от сервера и т.д. Классический способом, с насилованием сервера с помощью 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
Guest
Цитата
А теперь вопрос: годится ли такой такой вариант реализации сервера-соккета? Не слишком ли он грубый?


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

Вообще мне кажется, что писать самому реализацию WS не самая оптимальная идея.
Вроде бы сейчас самая модная реализация WS под PHP это Ratchet.
Вот туториал как сделать Hello world на нем: http://socketo.me/docs/hello-world .
N0ob
Guest спасибо конечно, но нет! Я не одобряю готовые решения, которые могу сделать сам, да и время позволяет. Хочу сам знать все тонкости
Invis1ble
Цитата (N0ob @ 6.04.2016 - 20:05)
Guest спасибо конечно, но нет! Я не одобряю готовые решения, которые могу сделать сам, да и время позволяет. Хочу сам знать все тонкости

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

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

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

N0ob
Invis1ble я думаю, и на русском тоже есть. А если нет, то можно будет этот момент пока незаметно обойти)
N0ob
В целом, с принципом TCP/IP я разобрался, в теории. И охватил еще и UPD. Теоритические различия не большие. Осталось все это как то на практике опробовать. На вебсокетах, наверное, и буду "щупать")
T1grOK
Цитата (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
Kusss
N0ob
В UDP нет подтверждения доставки. Тут как в анекдоте.
Цитата
Идут стрельбы. Дали автоматы, патроны, показали куда стрелять.
Админ отстрелялся, подводят итоги. Мишень админа чистая.
Командир: - ?.
Админ, проверяя автомат: - С моей стороны пули вылетели. Проблемы у вас.
N0ob
T1grOK этого не знал. Но смысл у них один и тот же, только принцип разный. TCP использует соединение с конкретным клиентом/сервером с подтверждением, а UDP "раскидывается" пакетами на лево и на право без взаимного согласия. Только вот не знаю, где уместен UDP? В статье написано, что его используют в DNS сервере. Не знаю, в чем его плюс в данной сфере? Мб он затрачивает меньше ресурсов и времени?
T1grOK
UDP меньше несет дополнительной информации, чем TCP. Поэтому иногда берут UDP, допиливают гарантированную доставку и получают, что то похожее на TCP, но с меньшим размеров посылок.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
N0ob
T1grOK можно ли эту "сборку" впихнуть на сайт?) Вместо вебсокетов на TCP/IP
T1grOK
Сокеты уровня TCP, UDP браузерами не поддерживается. Есть только экспериментальные примочки, которые работаю не везде и не всегда.

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

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
N0ob
T1grOK та не, с ними все нормально. Спросил чисто из интереса smile.gif smile.gif
N0ob
Цитата
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 &");


Какой командой нужно удалять процесс, созданный выше. Т.к. не красиво получается, когда закончил работать а сервак еще работает. Нужно ж как то его тормозить
T1grOK
Стопнешь процесс, а порт как тогда слушать?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.