Tag: 实时

MeteorJS订阅机制

我有一个关于meteor订阅/发布的问题。 当你在meteor订阅一个发布,客户端数据库是更新的还是只在服务器数据库的一个副本? 事实上,Meteor会在订阅之后更新本地数据库吗,还是仅仅是T时刻的订阅时刻的服务器数据库的映像? 我可以在客户端调用Collection.find()时获取最后一个数据吗?

从局域网内部和外部使用socket.io

我正在使用socket.io来处理需要我将实时数据传输到浏览器的项目。 现在服务器部分是好的,但在socket.io客户端io.connect()调用,我有过去的一些问题,没有适当的解决scheme。 我已经尝试了通常的嫌疑犯,但我没有通过。 我的客户端调用如下所示: var socket = io.connect('http://10.95.xx.xx:5002'); 10.95。 ..是局域网上服务器的IP地址。 使用这个IP,我可以在局域网内的任何一台机器上访问局域网内的服务器,但这不能从局域网外部工作。 问题很可能是这个IP只用于局域网而不是公用IP。 根据大学的networking设置,公共IP是128.95 …如果我改变它到这个IP,那么它将从外部访问,而不是从内部访问。 解决这个问题的一个方法是,我尝试读取客户端的IP地址,并根据它来决定参数IP。 但是这并不健壮。 另外,我尝试使用io.connect("/") 。 在以前的情况下它已经为我工作了,但是这次没有。 此外,空的调用不起作用io.connect()没有工作。

如何在执行事件时创builddynamic的androidpath对象?

我正在尝试使用基于Socket.io的Node.js服务器搭载Android构build一个实时协作绘图板应用程序。 我已经使用了Android端的Socket.io Java客户端。 我能够绘制出一条path,并将协调发送到服务器,并从服务器接近实时地获取广播。 整个概念几乎完成,但是我陷入了一个大问题。 我在Android是一个完整的新手,这实际上是我的第一个Android应用程序,我完全是为了学习目的而创build的。 所以,问题是,在每个与服务器的新连接上,我需要一个新的Path对象。 现在我的单path对象发生了什么,当有响应来自服务器,我试图绘制path,它使用相同的path对象,因此,join我画线,与线坐标我从服务器收到的。 此问题导致需要为每个到服务器的新连接创build一个新的Path对象。 请注意,通过一个新的连接,我的意思是,通过打开应用程序连接到服务器的新设备。 这个新人,你可以参与协作绘图的经验,至less,这就是我想要build立的。 我认为会工作的是,在每一个新的连接,我会创build一个新的path对象,并把它放在一个ArrayList,然后根据需要引用相应的path对象。 但是,然后我发现了一个新的问题,即在onDraw()覆盖的方法内实际创build视图时,path被初始化。 所以,我的最后一个问题是: 在Android中,如何在执行事件时创builddynamicpath对象? 这是自定义View package com.example.thisisppn.drawtogether; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import com.github.nkzawa.emitter.Emitter; import com.github.nkzawa.socketio.client.Socket; import com.github.nkzawa.socketio.client.IO; import org.json.JSONException; import org.json.JSONObject; import java.net.URISyntaxException; public class MainDrawingView extends View […]

使实时socket.io Pong游戏更快

我刚刚完成了使用node.js和socket.io作为后端的Pong游戏,用jQuery作为客户端。 我把游戏放在我的免费层AWS实例上,机制工作正常,但延迟是无法玩的。 在游戏中,控制它的玩家的桨在本地移动。 客户端也发送一个服务器请求,每个requestFrameAnimation广播桨板运动到对手。 为了发射球,发球的球员按下发送服务器请求的空格键,然后向两个球员发出球开始运动。 桨运动和球发射都受到延迟的影响。 对于桨我觉得问题是,我发送一个服务器请求每个requestFrameAnimation这可能是一个速度快。 也许我应该设置一个setInterval,每隔一秒钟将玩家的桨位置发送给对手。 至于球,因为它开始移动的信号是由服务器发送的,我想我需要发送一个实际的时间来提前发射空格键,所以每个本地机器可以倒计时到这个时间。 这里是我的客户端代码的一些上下文剪辑: function updateFrame(){ paddleSpeed = 0; if (keysPressed.up){ // Move paddle up if (!(myPaddle.offset().top <= arena.offset().top)){ // Make sure paddle isn't at top paddleSpeed -= 8; } } if (keysPressed.down) { // Move paddle down if (!(myPaddle.offset().top+paddleL.height() >= arena.offset().top + arena.height())){ // Make sure paddle isn't […]

实时networking通知服务

我一直在试图build立一个实时通知系统。 最近2天我search了很多,我相信最好和最简单的解决scheme是使用node.js和socket.io来开发它,但我不知道这些。 node.js和socket.io是一个很好的实践,使其发生? 规格 将存储在数据库中的两组用户(简单用户和pipe理员) 当一个简单的用户发布一些东西,该post将被发送到(所有)pipe理员 如果pipe理员回复post,回复将只发送给特定的用户 有什么简单的例子或教程,以开始一些东西? 如果任何人可以发表任何例子,这将是非常有帮助的我..

为追随者提供实时新闻馈送 – 哪些工具和语言?

我想实时地为Twitter这样的追随者实施新闻推送。 但是,我被困在哪些工具将是我的目的最好的。 解决scheme(复合解决scheme)应该是生产就绪的。 我试过node.js + socket.io + rabbitmq(node-ampq,rabbitJS),但节点经常崩溃…另一个解决scheme是Tornado + sockJS-tornadio,但是我不确定(并且知道Python不好)。 在深入研究代码之前,我只需要知道哪些工具可以用于我的目的,并且可以“真正”实时。 真的,我的意思是快速的请求响应。 我已经尝试了RabbitMQ + PHP API + Ajax,但它不是“真正”实时的,而是使用ajax而不是websockets。 新闻源的数据将会像“John更新其个人资料”,“Doe上传新文件”以及类似的内容。 谢谢!

Etherpad的时间线function如何工作?

我想了解Etherpad的时间线function如何工作。 如果你不知道这里的etherpad软件是它的实现 – http://piratepad.net/ 做一些编辑,写一些东西,大胆地使用编辑器,然后在右上angular你会看到时间表。 点击并播放它。 我可以看到像这样的JSON响应 – 但任何人都可以把它分解成一些可理解的东西。 这是从它的Node.js端口的一段代码 – https://github.com/Pita/etherpad-lite/blob/master/src/node/handler/TimesliderMessageHandler.js#L359 我非常有兴趣了解JSON响应及其工作原理。 另外什么数据库是最适合这种应用程序(etherpad,谷歌文档等)。 Nosql(如mongodb)或sql(如mysql)。

Node.js设置套接字ID

从Node.js的官方聊天示例开始 提示用户通过“注册”(client.html)将他的名字发送到服务器: while (name == '') { name = prompt("What's your name?",""); } socket.emit('register', name ); 服务器收到名称。 我想让它作为套接字的标识符的名字。 所以,当我需要发送一个消息给该用户,我发送到他的名字(姓名存储在数据库中的信息)的套接字。 更改将在这里发生(server.js): socket.on('register', function (name) { socket.set('nickname', name, function () { // this kind of emit will send to all! 😀 io.sockets.emit('chat', { msg : "naay nag apil2! si " + name + '!', msgr : "mr. […]

实时聊天,不想丢失消息 – 使用队列(redis,zeromq)?

我有一个应用程序,有一些实时聊天。 聊天是在客户端和服务器端(nodejs)使用Faye实现的。 现在这个客户端聊天被用在rails应用程序中,当我的页面重新加载/刷新时,我不想丢失在以下情况下可能发生的消息: 我重新加载页面 我从DB获取聊天logging 聊天对方的用户写入5行 我呈现的页面 我错过了5个最近的logging 我想听听你对解决这个问题的意见。 我有一个类似于消息队列的东西,在那里没有传递给客户端的消息只是在那里等待,并在以后通过javascript来访问页面。 我也希望你的意见,如果有人证实,消息队列是适合使用zeromq或在redis中实现简单的队列,我已经使用(不想要很多技术)。

使用Node.js和Socket.io实时更新大型HTML内容

我正在构build一个Web应用程序,根据一个客户端所做的更改来更新每个客户端的Web页面的HTML内容,为此我使用了Node.js的Socket.io。 我正在使用HTML5的contenteditable属性来允许客户端手动编辑我需要为其他客户端更新的div元素的内容。 我面临的问题是,我不明白通过websockets发送的数据通知服务器,反过来,其他客户端所做的更改。 在添加和删除每个字符时发送整个innerHTML意味着通过websockets发送大量的数据,导致性能差和速度慢。 发送附加数据不是一个选项,因为我们不知道在div元素的哪个位置数据被添加或删除或编辑。 请注意,使用键盘并不是一个客户端可以更改其网页副本的HTML内容的唯一方式。 所需div元素的数据根据​​客户端使用javascript的几个活动而改变。 现在我需要知道如何才能通过websocket发送确切的变化信息,甚至稍作修改即可获得实时体验。 PS我不打算使用任何现有的模块,如Share.js,但欢迎提出build议。