Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.05.2017, 22:58
Новичок на форуме
Отправить личное сообщение для blvckmeister Посмотреть профиль Найти все сообщения от blvckmeister
 
Регистрация: 26.03.2017
Сообщений: 8

Websocket multi channels
Всем доброго времени суток.

Написал чат, хочу сделать отдельные комнаты, соответственно в room1 юзер должен получать сообщения тех кто отправляет их в этой комнате. К моему сожалению это не получается реализовать, сообщения приходят во все комнаты сразу, скажем так, что я не могу понять, как реализовать разные потоки/каналы, для разных комнат, конечно могу запустить для каждой комнаты свой сокет-сервер, но я думаю, что это просто бред. Прошу Вашей помощи в этом вопросе, а именно, есть какой-то вариант создания таких потоков если запущен только 1 сокет-сервер?

Скрипт чата, описанный ниже генерируется с помощью пхп, а алгоритм следующий:
1. Я кликаю на 1 из 3 комнат.
2. После клика id этой комнаты отправляется с помощью AJAX в php-обработчик, который после подключения к mysql выводит все сообщения для комнаты с переданным id.
3. Сгенерированная страница выводится в блок.

Я пробовал сделать следующее: для каждой комнаты (для каждого div, в который выводится сгенерированная страница) указывать уникальный id, но это не помогло, ведь js генерирует чат на стороне клиента, а сообщение отправляется на сервер, которому всё равно какие id я там прописал... Искал решения данной проблемы, но не нашел ничего, в голове крутится многопоточность, но нигде нет информации, научите пользоваться гуглом(

Спасибо!

Скрипт чата
var socket = new WebSocket("ws://localhost:8080");
socket.onopen = function() {
  alert("Соединение установлено.");
};

socket.onclose = function(event) {
  if (event.wasClean) {
    alert('Соединение закрыто чисто');
  } else {
    alert('Обрыв соединения');
  }
  alert('Код: ' + event.code + ' причина: ' + event.reason);
};

socket.onmessage = function(event) {
  let message = JSON.parse(event.data);
$('#listingm').append('<li class="clearfix"><div class="message-data" style="text-align:left;"><span class="message-data-name"><i class="fa fa-circle online"></i>+message.name+</span><span class="message-data-time">10:12 AM, Today</span></div><div class="message my-message">+message.msg+</div></li>');
  document.getElementById('chat-history').scrollTop = 9999;
};

socket.onerror = function(error) {
  alert("Ошибка " + error.message);
};

$(#sendings).click(function(){
    	    let message = {
    				name: "'.$_SESSION['personaname'].'",
    				msg: $('#message-to-send').val()
    			}
    			socket.send(JSON.stringify(
    				message));
    			return false;
    	});

Сокет-сервер
<?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(
            new WsServer(
                new Chat()
            )
        ),
        8080
    );

    $server->run();
?>

Последний раз редактировалось blvckmeister, 02.05.2017 в 23:08.
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2017, 00:27
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

blvckmeister, запись "ws://localhost:8080?room=1", чтение $room = $conn->WebSocket->request->getQuery()->get('room');
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2017, 22:08
Новичок на форуме
Отправить личное сообщение для blvckmeister Посмотреть профиль Найти все сообщения от blvckmeister
 
Регистрация: 26.03.2017
Сообщений: 8

Rise, спасибо, будем пробовать!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных из websocket UnRealm Общие вопросы Javascript 2 14.02.2017 00:56
Websocket что должен делать скрипт Sergey and AJAX и COMET 0 12.12.2016 23:05
Ошибка синтаксиса websocket = new WebSocket(uri, protocols); valmonv Internet Explorer 1 01.04.2016 12:39
WebSockets / Error during WebSocket handshake: Unexpected response code: 200 Siend Общие вопросы Javascript 1 10.11.2015 16:39
node.js - ws & websocket Reflexion AJAX и COMET 1 09.04.2013 01:14