2015-04-10 4 views
1

Это скорее концептуальный пробел в понимании, чем технический. Я новичок в web socket \ messaging api. Я запустил приложение чата с использованием сервера ruby ​​ruby, и все отлично работает между двумя браузерами. Я хочу отправить сообщение с отдельного рубинового клиента клиенту браузера, который отправляет сообщения на тот же сервер. Можно ли отправить сообщение от клиента, как показано ниже, в браузер, чей скрипт также указан ниже? Это не связано с приложением, которое я создал, но я пытался понять использование WS client api. Или, в частности, я могу отправить сообщение от клиента сервера клиенту браузера? Наверное, мне не хватает понимания слова «клиент» здесь.Клиент сервера для связи с клиентом браузера

Я вижу сообщения на консоли сервера, но браузер не получает сообщение, отправленное автономным клиентом.

Кроме того, я вижу это, когда я запустить клиент:

Started GET "/ Фей/test123" для 127.0.0.1 в 2015-04-09 07:17:46 -0400

require 'faye' 
require 'eventmachine' 

EM.run { 
    ws = Faye::WebSocket::Client.new('ws://localhost:9292/faye/test123') 
      ws.onopen = lambda do |event| 
     p [:open, ws.headers] 
     ws.send('987654321') 
    end 

    ws.on :open do |event| 
     p [:open] 
     ws.send('123 123 123 123') 
     p [:sent] 
    end 
} 

Сценарий браузера:

window.client = new Faye.Client('http://localhost:9292/faye'); 

client.subscribe('/test123', function(payload){ 
    if(payload.message) 
    { 
     console.log('I am in here 77777.......'+payload.message); 
     return $("#incomingText").append(payload.message); 
    } 
    } 

ответ

0

Глядя на ваш код, я думаю, было бы полезно выделить разницу между websockets и faye.

Faye - это фреймворк, который поддерживает несколько транспортов, которые являются лишь одним из них. Например, он может также выполнять длительный опрос. Одним из преимуществ Faye является то, что он может выбрать правильный транспорт, который понимают как клиент, так и сервер. Он также реализует простой протокол pub/sub поверх этого транспорта, предоставляя вам хороший API для создания.

Выполнение чистой реализации websocket полностью выполнимо, но если вы собираетесь пойти с Faye, это, вероятно, хорошая идея использовать API публикации/подписки Faye, а не гадость с веб-сайтами Faye напрямую.

Чтобы ответить на ваш конкретный вопрос:

Можно ли отправить сообщение от клиента, как один ниже браузер, чей сценарий также приводится ниже?

Да, абсолютно, но я предлагаю сделать это с помощью Faye::Client. Вот что ваш серверный код может выглядеть следующим образом:

client = Faye::Client.new('http://localhost:9292/faye') 

client.publish('/test123', 'message' => 'Hello world') 

С гораздо больше информации здесь:

http://faye.jcoglan.com/ruby/clients.html

+0

Он работал, когда я изменил протокол (он решил протокол). Но я не могу понять, почему сервер не взял его или не отправил в другой клиент браузера с клиентом сервера Websocket. Кстати, вы правы, я помещаю http в код браузера, когда я помещаю ws, это провалилось, Не знаю, почему !!! ... Наверное, я запутался со следующим примером: https://github.com/faye/Фай-WebSocket-рубиновые # обкатка ваших сокеты-приложение –

Смежные вопросы