这更像是概念上的理解差距而不是技术差距。我是web socket \ messaging api的新手。 我使用faye ruby服务器运行聊天应用程序,两个浏览器之间的一切正常。我想从独立的ruby客户端向浏览器客户端发送消息,该客户端正在向同一服务器发送消息。是否可以从下面的客户端向浏览器发送消息,该消息的脚本也在下面给出? 这与我创建的应用程序无关,但我试图了解WS客户端api的使用。或者具体说,我可以从服务器客户端向浏览器客户端发送消息吗?我想我在这里缺乏对“客户”一词的理解。
我在服务器控制台上看到了这些消息,但是浏览器没有收到独立客户端发送的消息。
当我运行客户端时,我也看到了这一点:
于2015-04-09 07:17:46 -0400开始获取127.0.0.1的“/ faye / test123”
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 :(得分:0)
查看您的代码我认为强调websockets和faye之间的区别可能很有用。
Faye是一个支持多种传输的框架,websockets只是其中之一。例如,它也可以进行长轮询。 Faye的一个好处是它可以选择客户端和服务器都能理解的正确传输。它还在该传输之上实现了一个简单的发布/订阅协议,为您提供了一个很好的API来构建。
完成一个纯粹的websocket实现是完全可行的,但是如果你要和Faye一起使用,那么使用Faye的发布/订阅API并不直接与Faye的websockets进行混淆可能是一个好主意。
回答您的具体问题:
是否可以从下面的客户端向浏览器发送消息,该消息的脚本也在下面给出?
是的,绝对但我建议用Faye::Client
来做。以下是服务器端代码的外观:
client = Faye::Client.new('http://localhost:9292/faye')
client.publish('/test123', 'message' => 'Hello world')
这里有更多信息: