• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • Веб сокеты или hello world по новому

Веб сокеты или hello world по новому

04.05.2017 13:58
lnroma 3 533 Источник
PHP*
Я не программист, Я любить заюзать готовые решение и получить результат в кратчайшие сроки. Сегодня, Я вам расскажу как я быстро поднял чатик на веб сокетах. И конкурс о сиськах в Московских пробках.
И так «hello world» с использованием ratchet socketo.me кому интересно прошу под кат

1. И так начнём с того что установим composer и создадим директорию с проэктом к примеру myProject.
2. Создаём composer.json с содержимым
{
    "autoload": {
        "psr-0": {
            "MyApp": "src"
        }
    },
    "require": {
        "cboden/ratchet": "0.3.*"
    }
}

И выполняем composer install
3. Создадим директорию src/MyApp и обработчик Chat
<?php
namespace MyApp;

require_once('Db.php');

use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
use MyApp\Db;

class Chat implements MessageComponentInterface
{
    protected $clients;

    public function __construct()
    {
        $this->clients = new \SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn)
    {
        // устанавливаем новое соеденение
        $this->clients->attach($conn);
    }

    // событие отправки сообщения в сокет
    public function onMessage(ConnectionInterface $from, $msg)
    {  
        // отправляем сообщение всем тем кто присоеденился
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

    // закрытия соеденения
    public function onClose(ConnectionInterface $conn)
    {
        $this->clients->detach($conn);
    }
    
    // обработка ошибок
    public function onError(ConnectionInterface $conn, \Exception $e)
    {
        $conn->close();
    }
}


4. Теперь создадим директорию bin сервер server.php

<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
    new HttpServer( // запускаем http сервер
        new WsServer( // websocket сервер
            new Chat() // обработчик событий
        )
    ),
    8080,
    '127.0.0.1'
);

$server->run();


5. Для соединения страницы с сокетом достаточно вызова следующей функции js
var conn = new WebSocket('ws://127.0.0.1:8080');

для того что бы отловить сообщения от сокета на необходимо по вешать слушателя на сообщение onmessage последнего
conn.onmessage = function(e) {
     console.log(e.data);
}

в data нам придёт ответ отправленный сервером в данном случае строка
conn.send('hello world')
так мы можем отправить сообщение на сервер.
6. Запуск этого добра:
— Запускаем сервер php bin/server.php
— Открываем страничку и готово

В качестве заключения приведу ссылки:
1. Чатик на сокетах sidimvprobke.com
2. git репазиторий github.com/lnroma/sidimvprobke
3. конкурс — конкурс с сиськами (тест на сообразительность, ведь завтра пятница)

не сложно правда ли?
Поделиться с друзьями
-->

Комментарии (3)


  1. ishef
    04.05.2017 17:14
    #10203604
    +2

    Не могу определить что хуже — грамматика или смысл.


  1. vlreshet
    04.05.2017 17:15
    #10203606

    Ээээ… ммм… и?


  1. rapita
    04.05.2017 17:30
    #10203622
    +1

    Это быстрый перевод Creating Your First Application из документации?

МЕТКИ

  • Хабы
  • Теги

php

WebSockets

server

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • Модные направления в разработке

    • 16.05.2017 15:50

    Веб сокеты или hello world по новому

    • 04.05.2017 13:58

    Информационая безопасность в сфере телекома на примере Megafon'а -5

    • 17.10.2016 14:45

    GUI для php, или скрещиваем написанное расширение с скриншотером +2

    • 04.10.2016 23:48

    Пишем расширение с помощью библиотеки php-cpp для php7 +18

    • 01.10.2016 21:46

    Разработка addon firefox, или ещё один скриншотер с помощью webExtensions и addon sdk

    • 26.09.2016 13:31

    Разработка расширения для firefox, или мой первый опыт, на примере скриншотера +18

    • 23.09.2016 18:07

    Системные скрипты на php для linux, пишем скриншотер +2

    • 22.09.2016 14:10

    Разработка сервера на php и системных скриптов -2

    • 17.09.2016 15:51

    В России заблокировали сайты PornHub и YouPorn

    • 14.09.2016 15:43

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
08:00

Почему xor eax, eax используется так часто? +54

09:01

История дирижаблей. Часть 2: рождение и смерть французского дирижаблестроения +24

16:22

В прошлом квартале я внедрил Microsoft Copilot для 4000 сотрудников +23

12:00

Бунт против IBM или как хакеры сломали систему и сделали компьютеры персональными +22

07:54

«Прочный как кирпич»: сервер от Nokia, Dataflow-ускорители и не только +21

14:07

Инженерное чудо Compaq'а из 90-х… +18

13:01

Ассемблер для гоферов. Структура и макросы. Часть 2 +18

20:08

Скажи yay -S say +15

19:05

Вот такие пироги… Почему нам врут круговые диаграммы +13

06:15

Ловушки PowerShell: поведение, которое ломает привычные ожидания разработчиков +13

09:05

Как работают современные браузеры. Часть 2 +10

15:01

Open source-стратегии: как работать с партнерами на базе открытых технологий — опыт Александра Нозика, директора SPC +6

14:52

librats: Выпуск версии 0.5.x. Ускорение поиска пиров, алгоритм spider, поддержка JavaScript, Python и многое другое +6

12:47

Исследование комет: анализ патентов +5

07:28

Транскраниальный стимулятор (tDCS) своими руками +5

07:00

Я вернулся в 1999-й и поймал «Чернобыль» +5

18:36

Арифметика сверточных слоев. Вычисляем размерность изображения с учетом stride, padding и dilation +4

11:55

Что почитать: «вредные советы» для open source-контрибьюторов, штрафы за пентест и вопросы информационной безопасности +4

11:32

11 полезных фичей Chrome DevTools часть 2 +4

08:34

Бросаем Event Loop, переходим на Горутины: Go для JS-девелоперов (Часть 1) +4

06:00

Большой куш Сбера – громкие заголовки на чужом коде +74

08:05

Иногда компьютеры ошибаются. Воспроизводим тот самый баг на $475 000 000 +73

17:32

Невероятная жизнь каспийского монстра +67

13:01

6 Docker-фич для продвинутого использования. Часть 2 +54

13:25

Колоноскопия как прививка от рака +50

08:01

Новые серверы, новый Kubernetes, новый класс хранения в S3 и другие апдейты — дайджест продуктов Selectel +35

09:12

Трибоэлектрические наногенераторы +32

10:01

Как ускорить RDP при плохом интернете +27

05:00

Программу для просмотра любого файла из букв +26

06:08

DIY пылесос для ЧПУ 3018 +23

12:15

Как мы внедрили LLM в мессенджер Авито +22

09:39

Дети, запомните: если дядя из туториала предлагает вам начать проект на Express.js… Рейтинг opensource для фронтенда +22

15:41

Общая теория относительности без координат: революция Туллио Редже +20

12:16

Нагрузочное тестирование YMatrix +19

14:05

Что делать, если после Dispatch хочется ещё. Лучшие представители жанра «Интерактивное кино» +17

06:30

Как преобразовать огромный монорепозиторий с автотестами в микросервисы +16

07:37

Логирование с Serilog: как повысить отказоустойчивость и скорость +15

16:05

Идущий жидкою тропою: гидромотор +14

10:01

Опасные ловушки C++: типичные ошибки, их последствия и защита +14

10:59

RoadMap по Python: с нуля до middle +13

ОБСУЖДАЕМОЕ

  • Невероятная жизнь каспийского монстра +67

    • 147   125000

    Один день из жизни программиста микроконтроллеров (или бег с препятствиями) +4

    • 75   17000

    Большой куш Сбера – громкие заголовки на чужом коде +74

    • 56   18000

    Колоноскопия как прививка от рака +50

    • 55   10000

    Инженерное чудо Compaq'а из 90-х… +18

    • 50   7400

    Какой ПК собрать, чтобы он не устарел на следующий день +9

    • 32   18000

    Харды не спасут: почему «человек-клей» выживет, а «токсичного гения» уволят (даже если он тащит прод) +12

    • 31   7300

    Структура кода в папке Domain по DDD +5

    • 31   9300

    Дети, запомните: если дядя из туториала предлагает вам начать проект на Express.js… Рейтинг opensource для фронтенда +22

    • 30   21000

    Один алгоритм вместо 12 правил или как запомнить формы английских времён раз и навсегда, не открывая учебник +3

    • 30   15000

    ИИ-психоз миллиардеров: как Big Tech сходит с ума от собственных продуктов +1

    • 27   8300

    Особенности работы с физической памятью в ОС Linux, часть 1 +7

    • 26   7000

    Почему «Тайный Санта» провалился в нашем офисе +5

    • 21   5500

    Эдсгер Дейкстра «О вреде оператора go to» -1

    • 20   6300

    Умершие языки программирования (Fortran, Ada, Cobol) И почему на западе они до сих пор живы +4

    • 20   8000
  • Главная
  • Контакты
© 2025. Все публикации принадлежат авторам.