Ruby on rails 3.1 在网络中的另一台计算机上使用浏览器时,Faye不会发布
我的rails应用程序中有faye实现。当两个浏览器位于同一台计算机上时,发布方法可以正常工作。当我从另一台计算机上的另一个浏览器访问应用程序时,它只在客户端到服务器之间工作,不会发布到其他客户端。此外,当服务器上的浏览器发生更改时,发布事件不会推送到客户端。Ruby on rails 3.1 在网络中的另一台计算机上使用浏览器时,Faye不会发布,ruby-on-rails-3.1,localhost,faye,Ruby On Rails 3.1,Localhost,Faye,我的rails应用程序中有faye实现。当两个浏览器位于同一台计算机上时,发布方法可以正常工作。当我从另一台计算机上的另一个浏览器访问应用程序时,它只在客户端到服务器之间工作,不会发布到其他客户端。此外,当服务器上的浏览器发生更改时,发布事件不会推送到客户端。 控制器发布代码: def publish(channel, data) message = { :channel => channel, :data => data, :ext =&
控制器发布代码:
def publish(channel, data)
message = {
:channel => channel,
:data => data,
:ext => {:faye_token => FAYE_OUTGOING_AUTH_TOKEN}
}
uri = URI.parse('http://localhost:9292/faye')
Net::HTTP.post_form(uri, :message => message.to_json)
end
rackup faye.ru -s thin -E production -d
运行faye的命令:
def publish(channel, data)
message = {
:channel => channel,
:data => data,
:ext => {:faye_token => FAYE_OUTGOING_AUTH_TOKEN}
}
uri = URI.parse('http://localhost:9292/faye')
Net::HTTP.post_form(uri, :message => message.to_json)
end
rackup faye.ru -s thin -E production -d
示例:A:服务器, B:客户1, C:客户2
A B和C是同一网络中的不同计算机,它们都订阅了同一通道
谢谢。为了解决这个问题,我用Faye运行的服务器的地址替换了“localhost”的所有实例。这也包括为客户端订阅频道 希望有帮助,
干杯 嘿,巴巴克:我也面临着同样的问题,我使用的是nodejs+express+faye。所以我应该为每个订阅客户端添加ip_addr:port
var client = new Faye.Client('/faye',{
endpoints:{
websocket:'http:ws.chat-yummyfoods.rhcloud.com'
}
,timeout: 20
});
client.disable('websocket');
console.log("client:"+client);
var subscription=client.subscribe('/channel', function(message) {
console.log("Message:"+message.text);
$('#messages').append('<p>'+message.text+'</p>');
});
subscription.then(function(){
console.log('subscribe is active');
alert('subscribe is active');
});
var client=new Faye.client(“/Faye”{
端点:{
websocket:'http:ws.chat yummyfoods.rhcloud.com'
}
,超时时间:20
});
client.disable('websocket');
console.log(“客户端:+客户端”);
var subscription=client.subscribe('/channel',函数(消息){
console.log(“Message:+Message.text”);
$(“#messages”).append(“”+message.text+””);
});
subscription.then(函数(){
log('subscribe is active');
警报(“订阅处于活动状态”);
});
所以我使用了uri=uri.parse('http://localhost:9292/faye“)
line,在另一台计算机上,它试图访问自己的本地主机,该主机与faye主地址不同。通过让它们指向我的服务器地址uri=uri.parse('http://SERVER_IP:9292/faye“)
问题已经解决。我也解决了问题,请检查一下