我想使用 WebSocket 将数据推送到客户端。我现在不知道如何将数据(从 Redis)返回给客户端。有人可以给我解释一下吗?
套接字 Controller .rb
class SocketsController < WebsocketRails::BaseController
def create
send_message :new_event, {:message => 'TEST'}
end
end
事件.rb
WebsocketRails::EventMap.describe do
subscribe :new_event, 'sockets#create'
end
websocket_rails.rb
WebsocketRails.setup do |config|
config.redis_options = { driver: :ruby }
config.standalone = false
config.synchronize = true
end
客户端:
$socket.on('test', function(data) {
console.log(data);
$scope.events.upshift(data);
if($scope.events.length>50){
$scope.events.length=50;
EventsList =$scope.events;
}
});
routerApp.config(["$socketProvider", function ($socketProvider) {
$socketProvider.setUrl("http://172.16.20.179:3000/events");
}]);
在客户端问题看起来像:
GET http://172.16.20.179:3000/socket.io/?
EIO=3&transport=polling&t=1439215071732-9
XMLHttpRequest cannot load http://172.16.20.179:3000/socket.io/?
EIO=3&transport=polling&t=1439215056291-6. No 'Access-Control-Allow-
Origin' header is present on the requested resource. Origin
'http://localhost:4000' is therefore not allowed access. The response
had HTTP status code 404.
最佳答案
您似乎正尝试将 Socket.IO
用于网络套接字。不支持 Rails 的 Socket.IO
实现。
如果你想要一个关于如何从 Angular.JS 与 websocket-rails 交互的例子,你可以使用,例如,下面的指南:
关于ruby-on-rails - rails - WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920394/