Socket.IO似乎是最流行和最活跃的WebSocket仿真库.Juggernaut使用它来创建一个完整的pub/sub系统.
Faye也很受欢迎,并拥有自己的javascript库,使其完整的功能可与Juggernaut相媲美.Juggernaut使用节点作为其服务器,而Faye可以使用节点或机架.Juggernaut使用Redis进行持久化(更正:它使用Redis作为pub/sub),而Faye只将状态保存在内存中.
我正在尝试使用Flask micro-web框架上的服务器推送功能构建一个小型站点,但我不知道是否有一个框架可以直接使用.
我使用了Juggernaut,但它似乎没有在当前版本中使用redis-py,并且Juggernaut最近被弃用了.
有没有人对我的案子有任何建议?
我已经下载了redis-2.6.16.tar.gz文件并且我成功安装了.安装后我运行src/redis-server它工作正常.
但我不希望每次都手动运行src/redis-server,而是希望redis-server连续作为后台进程运行.
安装完成后我做了以下任务:
1. vim redis.conf我换了
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes
Run Code Online (Sandbox Code Playgroud)
但我发现了同样的结果.我做错了什么?
redis在后台运行后.我将使用以下命令运行juggernaut作为后台进程.
nohup node server.js
Run Code Online (Sandbox Code Playgroud)
但我无法让redis在后台运行.请提供一些解决方案.
我想知道如何(如果有的话)烧瓶执行长轮询,因此服务器可以通过连接发送数据到客户端.例如,如果服务器通过流式api接收到Twitter提要,那么它将如何传递给客户端浏览器?
我知道你不能在这种情况下使用flask.flash.
谢谢
谢谢你的例子.我查看了这些示例,当我尝试为我的代码实现它时,它仍然没有在客户端浏览器中提供实时输出.
我使用juggernaut和redis将它基于烧瓶片段().这是我的python代码:
import flask
from flask.views import MethodView
from tweetStreamsRT import StreamerRt
from juggernaut import Juggernaut
app = flask.Flask(__name__)
app.secret_key = "xxxxx"
PORT = 8080
class View(MethodView):
def get(self):
return flask.render_template('index.html')
def post(self):
results = StreamerRt().filter(track=[flask.request.form['event']])
jug = Juggernaut()
jug.publish('channel', results)
return self.get()
app.add_url_rule('/', view_func = View.as_view('index'), methods=['GET', 'POST'])
app.debug = True
if __name__ == "__main__":
print 'Listening on http://localhost:%s' % PORT
app.run()
Run Code Online (Sandbox Code Playgroud)
我的html页面是继承自基本html页面的:
{% extends "base.html" %}
{% import "forms.html" as forms %}
{% block page_header …
Run Code Online (Sandbox Code Playgroud) 如果我理解正确,Juggernaut建立在socket.io之上,而Faye则与Juggernaut layer和socket.io层结合.最近Ryan Bates提出了一个名为PrivatePub的Faye包装器,这使得运行Faye非常容易.
但是我已经有了一个在Heroku上运行的rails应用程序,而我想做的就是在它上面构建一个简单的聊天功能.
在研究时我发现很多人使用Pusher.似乎pusher在Heroku上得到了很好的支持,所以我正在考虑使用Pusher.
在我开始之前,我只是想确保我理解正确的事情.Pusher是否像推送请求的Heroku一样?我的选择是在Heroku上托管所有内容(包括Juggernaut或Faye模块),或者只是在Heroku上托管网站的静态部分,并将推送通知处理委托给推送器.
据我所知,从以下情况来看,这感觉就像一种更有效的方法:1.如果我使用推杆,我不必为了在Heroku上运行juggernaut/faye模块而跳过所有的箍.2.实时流量将委托给Pusher,这意味着我不会浪费我的Heroku服务器资源.
现在我只是一个初学者,对很多事情可能是错的,但请赐教.上述两个因素是否正确?我对Juggernaut/Faye/Pusher的理解是否正确?
我正在试图弄清楚如何在生产中运行Juggernaut服务器 - 假设我能够在开发和生产环境中为服务器配置不同的端口,因为我无法在生产环境中控制端口.还假设服务器将以"分离"模式启动?
任何建议都非常感谢.
基于任何发布 - 订阅消息传递系统Juggernaut的rails 3即时Messenger应用程序是否有任何体面的示例应用程序?
我正在尝试构建一个rails应用程序,它基本上只是一个文本编辑器(有一些我在其他地方找不到的其他功能 - 这就是为什么我要构建它)
其中一个核心功能是实时并发编辑或实时协作编辑(无论你想称之为什么).
到目前为止,我已经使用名为Juggernaut的插件设置了该网站.这使我能够从客户端或服务器向任何其他客户端发送我想要的任何Javascript.因此,当有人输入内容时,我可以将该人输入的内容发送给其他所有客户端,而其他客户端则不必轮询服务器.
问题我归结为我不知道用什么算法来解决冲突并尽可能以最好的方式做到这一点.我已经阅读了一些关于操作转换的内容,但只是简单的不知道如何使用我现在拥有的Javascript/Rails解决方案合理地实现它.
我想要像OT这样的东西,但不知道如何实现它,也不知道从哪里开始.任何有关如何实现这一点的帮助我都会非常高兴!
最初我打算使用Juggernaut,但它与Rails 3不兼容.而新的Juggernaut 2似乎完全独立于Rails,这不是我想要的.然后我发现抽筋,它看起来很整洁,但仍在开发中.所以我只是想知道我应该使用哪个框架?还是有更好的?谢谢!
我需要同步并选择重载.似乎可用的选项包括:Faye,Juggernaut,Cool.io,普通的老式事件机
有什么建议?什么是最受欢迎的,特别是在RoR社区?
感谢您对您的建议的任何解释.
jquery ruby-on-rails eventmachine juggernaut ruby-on-rails-3
我正在构建一个实时游戏,主要是基于聊天的,并且我需要使这些聊天中的许多并发运行,以通过Web套接字接收和发送数据。
有人告诉我,与其让每个游戏都产生一个进程,不如让每个游戏都具有一个进程且每个线程具有一个线程(也许使用事件机)。
我在套接字部分使用Juggernaut,它使我可以使用发布/订阅系统将数据发送给游戏中的所有玩家:每个玩家都订阅一个游戏。但是,如何将每个玩家的数据发送到该特定游戏?
我当时想我可以将游戏ID或通道ID从客户端发送到服务器,然后将其发送到相应的线程。
但是,如何将任何内容发送到线程?
我正在使用Juggernaut,Redis,SQLite和Rails 3.1构建一个简单的实时聊天
当另一个用户断开连接时(例如他关闭了窗口),我想给每个用户写一条新消息,这是为了听Juggernaut的客户端断开事件.
Juggernaut docs说我可以在服务器端做这个(Ruby)
Juggernaut.subscribe do |event, data|
# Use event/data
end
Run Code Online (Sandbox Code Playgroud)
问题是我不知道我应该把这个代码放在我的Rails应用程序(控制器,模型,观察者?)中.我试图将它放入模型中,但是服务器不会响应任何带有大量代码的请求进入模型.
我想我应该从服务器端收听该事件,因为如果用户因为关闭窗口而断开连接,那么我没有该用户的"客户端".
可能我错过了一些关于Juggernaut如何工作的东西.任何帮助将不胜感激.