• Главная
  • Контакты
Подписаться:
  • 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

Подписка


ЛУЧШЕЕ

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

Как я пытался ускорить анализ 12 000 комментариев с помощью GPU за 50 тысяч, но победил процессор +8

04:09

Роботы из «Звездных Войн» на заброшенной военной базе в Вальехо — фоторепортаж +5

00:21

NGC 55 — Галактика «Жемчужная нить» +3

06:01

С Puppet на Ansible за 4 года: 5 инсайтов и письмо себе в прошлое +2

05:11

Российские ученые разработали адаптивную систему управления манипулятором на колесах, основанную на работе нейросети +2

06:05

Что такое FHIR: основные концепции +1

07:00

Воскресная барахолка под Валенсией: винтажная аудиотехника, ноутбуки и много чего ещё +46

13:01

Отвлекать разработчиков ПО намного вреднее, чем считает большинство менеджеров +45

07:28

WiFi, который не ловил +43

10:41

Асинхронность vs. многопоточность: что выживет в эпоху No GIL? +34

09:01

Pasta e basta! Как паста и макароны стали национальным блюдом Италии и покорили Россию и США? Часть 3 +31

05:04

Шатдаун правительства США, а также Грокипедия от Илона Маска +31

17:26

Сам себе breakpoint +27

11:55

У меня нет рта, но я должен выводить эмодзи морского конька +21

09:30

Пятьдесят оттенков отказа: стоп слово — Zonal Shift +21

08:34

Kandinsky Image научился генерировать изображения с надписями на русском +21

16:13

Наше расследование: pulp fiction +15

13:00

Возрождение Windows 7: почему ее популярность внезапно выросла +14

07:30

Python 3.14: ошибки стали понятнее, чем когда-либо +14

06:17

От LPT_Print до IaC: Хроника Эволюции Системных Администраторов в России. Наша 25-летняя «Одиссея» +14

11:31

Насколько быстр Go? Симуляция миллионов частиц на смарт-ТВ +13

11:17

Java Digest #29 +12

08:22

Работа с RISC-V контроллерами на примере CH32V303. Часть 9. Многозадачность +12

18:56

Прямоугольные телескопы смогут найти Землю 2.0 +11

14:58

Embox поддерживает новый российский микроконтроллер от компании Миландр с архитектурой RISC-V +11

14:44

Ноам Хомский: его вклад в IT и ИИ +11

13:01

Пайплайн цифрового фотографа на LINUX +81

18:07

Zip-бомбы против агрессивных ИИ-краулеров +77

15:18

Про Лысенко, Вавилова, письмо трёхсот и генетику в СССР +59

13:57

Большой FAQ про Wi-Fi +49

09:01

Что значит «хороший вкус» в разработке ПО? +43

14:10

Отрезчик термоусадки v2.0 +41

13:20

Русские ящеры профессора Амалицкого +36

08:00

Как я сделал робота — что хотел и что получилось. Часть 1 +35

11:05

Элементы игрового дизайна и механики, от которых пора избавиться +32

16:40

User guide — пустая формальность или незаменимый документ? Руководство, как написать руководство +25

08:00

Motorola Razr V3: икона стиля из нулевых. Разбираем и изучаем +24

11:20

О горьком опыте масштабирования производств, о важности ведер и о причинах седины +23

12:06

LuckFox pico — одноплатник в форм факторе Arduino +21

07:41

От GPT-2 к gpt-oss: анализ достижений архитектуры +21

00:05

Атом смысла: как из ничего получить все +21

20:04

Учебный кластер ClickHouse на Docker Compose: от нуля к работающему стенду +14

10:16

Паттерны программирования при работе с LLM +13

07:28

Хранение временных данных в PostgreSQL +13

04:38

Как я переделал свой мини-ПК и зачем мне это было нужно +11

11:51

Почему хороших middle-разработчиков не повышают до senior — честный взгляд изнутри +10

ОБСУЖДАЕМОЕ

  • Про Лысенко, Вавилова, письмо трёхсот и генетику в СССР +59

    • 328   20000

    Zip-бомбы против агрессивных ИИ-краулеров +77

    • 103   17000

    Цифровая зависимость: почему проприетарный софт — тупик для человечества? +3

    • 81   2800

    Большой FAQ про Wi-Fi +49

    • 79   28000

    Пайплайн цифрового фотографа на LINUX +81

    • 73   7300

    Атом смысла: как из ничего получить все +21

    • 63   7700

    Психология худшего выбора. Почему с возрастом человек выбирает невежество, даже когда осознает свое решение? +9

    • 52   46000

    Отрезчик термоусадки v2.0 +41

    • 50   6700

    Элементы игрового дизайна и механики, от которых пора избавиться +32

    • 38   16000

    Motorola Razr V3: икона стиля из нулевых. Разбираем и изучаем +24

    • 35   9900

    Управляем зависимостями Cи и C++ через Nix +7

    • 30   1800

    Асинхронность vs. многопоточность: что выживет в эпоху No GIL? +34

    • 27   5600

    Дом в облаке, которое твое: запускаем личный сервер на UmbrelOS с полным шифрованием +7

    • 27   3300

    LuckFox pico — одноплатник в форм факторе Arduino +21

    • 27   8800

    Я беру проволоку, навиваю, запекаю и зарабатываю 13 млн за год +8

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