Git Product home page Git Product logo

Comments (4)

morozovsk avatar morozovsk commented on July 19, 2024

Здравствуйте. С юникс-сокетами потенциально много проблема (права и т.д.), по этому рекомендую использовать дефолтный конфиг из первого чата:
$config = array(
'class' => 'ChatWebsocketDaemonHandler',
'pid' => '/tmp/websocket_chat.pid',
'websocket' => 'tcp://127.0.0.1:8000',
'localsocket' => 'tcp://127.0.0.1:8010',
//'master' => 'tcp://127.0.0.1:8020',
//'eventDriver' => 'event'
);
И первый и второй чат использует вторую версию библиотеки, отличие межу чатами в том, что для второго чата нужно запуск двух скриптов (мастер и воркер), что можно использовать для масштабирования (1 мастер и много воркеров).

Рекомендую использовать первый чат, он проще заводится: https://github.com/morozovsk/websocket/tree/master/samples/chat

from websocket.

cbv-k avatar cbv-k commented on July 19, 2024

Большое спасибо за столь оперативный ответ!
Сейчас у меня в настройках:
'websocket' => 'tcp://домен:8000'
С внешних серверов все прекрасно работает.
Но когда я пытаюсь передать локально на сокет данные, чтобы отправить их всем подключенным клиентам - скрипт долго загружается, при этом ничего не происходит, и я не получаю никаких ошибок на сервере. Использую данный скрипт:
$fp = stream_socket_client("tcp://домен:8000", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
\n";
} else {
fwrite($fp, "vsem privet"."\r\n");
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
В чем может быть проблема?
Вообще, мне нужно передать данные, получаемые при помощи гет-запроса, всем подключенным к сокету, может есть какой-то иной способ?

from websocket.

morozovsk avatar morozovsk commented on July 19, 2024

в конфиге нужно добавить:
'localsocket' => 'tcp://127.0.0.1:8010'
и открывать соединение на него, потому что при подключении к 'websocket' => 'tcp://домен:8000'
также нужно добавить обработчик сообщений на локальном сокете.
Например этот будет рассылать всем клиентам вебсокета сообщения полученные по локальному сокету:
protected function onServiceMessage($connectionId, $data) {
foreach ($this->clients as $clientId => $client) {
$this->sendToClient($clientId, $data);
}
}
Я использую этот обработчик в примере с интеграции с yii-фреймворком:
https://github.com/morozovsk/websocket/blob/master/samples/yii/protected/components/WebsocketDaemonHandler.php

from websocket.

cbv-k avatar cbv-k commented on July 19, 2024

Огромное спасибо, все заработало!

from websocket.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.