@IvanN777

Не могу понять тестовый пример ruby вебсокеты, хотя есть догадки, можите помочь?

<html>
  <head>
    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'></script>
    <script>
      $(document).ready(function(){
        function debug(str){ $("#debug").append("<p>"+str+"</p>"); };

        ws = new WebSocket("ws://yourservice.com/websocket");
        ws.onmessage = function(evt) { $("#msg").append("<p>"+evt.data+"</p>"); };
        ws.onclose = function() { debug("socket closed"); };
        ws.onopen = function() {
          debug("connected...");
          ws.send("hello server");
        };
      });
    </script>
  </head>
  <body>
    <div id="debug"></div>
    <div id="msg"></div>
  </body>
</html>


require 'em-websocket'

EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
  ws.onopen    { ws.send "Hello Client!"}
  ws.onmessage { |msg| ws.send "Pong: #{msg}" }
  ws.onclose   { puts "WebSocket closed" }
end

https://www.igvita.com/2009/12/22/ruby-websockets-...
Вот здесь я начал читать про веб сокет соединение.
Есть простой код на клиенте в браузере есть обработчик и с этим все понятно.

Тонкость в деталях не совсем понятна.
Так как тут просто руби(не rails) мы устанавливаем гем 'em-websocket' глобально.

Подключить thin тоже через require? и запустить в командной строке вот так в директории ruby файла sudo thin start -p 8080.
А сдесь ws://yourservice.com/websocket адрес виртуального хоста?, тоесть скрипт к вирт хосту нужно прицепить?
  • Вопрос задан
  • 302 просмотра
Решения вопроса 1
@Renius
дурак восторженный
Ну во первых thin однопоточный, используйте puma.
В общем случае вам em и не нужен. em здесь выполняет одну функцию - поддержка нескольких соединений.
Что за виртуальный хост не знаю ws - протокол, yourservice.com урл, websocket - путь. это все может быть и на ws://0.0.0.0/subscribe
Ну и к слову, в rails есть edgeapi.rubyonrails.org/classes/ActionController/L...
Браузеры SSE уже давно умеют.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы