Articles of 联网

什么是通过WebSockets发送位置更新的正确方法?

我需要在运行node.js的游戏世界中广播位置更新。 我目前的想法是使用BinaryJS 。 不过,我不确定使用它的正确方法是什么。 我曾经想过3个选项: 我现在怎么样,使用socket.io :我以编程方式存储在给定的时间内发生的位置更新的缓冲区,然后一次发送它: setTimeout(function(){ //called a fixed amount of times per second (40) //this variable will hold the accumulated position changes on the last 25ms //var accumulated_position_changes = [id0,x0,y0,z0, id1,x1,y1,z1…]; client.send(accumulated_position_changes); },25); 但是,如果binary.js完成分块(是吗?),那么每次发生位置变化时,我应该不加区别地发送位置更改吗? MyClass.prototype.set_position = function(x,y,z){ // this is called thousands times a second this.x = x, this.y = y, this.z […]

.NET的Node.js

我知道关于允许C#和Node.js连接的Edge.js这样的项目,但是我正在谈论一些不同的东西。 是否有一个C#库,允许您在C#中构build可伸缩的非阻塞I / O单线程asynchronous事件服务器,类似于可以使用Node.js构build的服务器? 一个库也有Node.js的独特事件模型,单线程用户代码,multithreading文件/networking事件和本地代码(纠正我,如果我错了)。 当然,我知道ASP和WCF,以及这样的OSS项目,但是我正在寻找一些可以与Node.js(一种C#的Node.js端口)相媲美的性能。 你知道任何这样的图书馆,它将需要build设吗? 单线程还是multithreading? 如果您想要一个使用APC和完成端口完成所有工作的单线程托pipe进程,您将不得不手动编写代码。 构build它将是有风险和棘手的。 萨姆·萨尔顿 显然,单线程使代码更容易编写,因为你不需要使用锁和互斥锁。 只有一个线程读取/修改程序状态数据,保持简单。 所有计算都在单独的线程上进行,并在结果准备就绪时返回主线程。 所有文件/networking事件分支出来并在操作完成后返回到主线程。 相关但不同的问题: 非阻塞的单线程Web服务器 最小的Web服务器 单线程asynchronous事件 可能有用的项目: ALE与我想要的最接近,类似于Node.js的语法 Manos de mono ,一个用于C#的单线程服务器 C#中的消息循环 ,处理单个线程上的事件 C#中Libuv的包装( 1,2 ) Anna仅用于HTTP请求(无二进制),语法类似于Node.js

NodeJS – TCP – 发送一个HTTP请求

我试图通过TCP套接字发送一个HTTP请求。 但是我根本没有收到www.google.com的任何回应。 不知道我做错了什么。 这里是代码: var client, net, raw_request; net = require('net'); raw_request = "GET http://www.google.com/ HTTP/1.1\nUser-Agent: Mozilla 5.0\nhost: www.google.com\nCookie: \ncontent-length: 0\nConnection: keep-alive"; client = new net.Socket(); client.connect(80, "www.google.com", function() { console.log("Sending request"); return client.write(raw_request); }); client.on("data", function(data) { console.log("Data"); return console.log(data); }); 希望可以有人帮帮我。 只是澄清…要求缺less两个结束换行符,所有换行符都必须格式为/ r / n。 感谢大家! 🙂

node.js中的socket.io不支持3G移动networking

node.js中的socket.io不支持3G移动networking。 我已经试过这些东西了: io.set("transports", ["xhr-polling"]); io.set('browser client minification', true); io.set('browser client etag', true);

如何在node.js中监听一个随机的tcp套接字

我知道我可以在node.js中创build一个tcp服务器 var dataServer = net.createServer(function (stream) { }); dataServer.on("listening", function() { // this data server listen to a random port // but how can I get the number of port console.log(dataServer.localPort) } dataServer.listen(0, '0.0.0.0'); 但我不知道如何获取端口号并发送到另一个服务。 或者我应该find一个随机可用的端口,并传递给dataServer.listen?

nodejs – 为什么Node.js可以处理大量的simulteneous持久连接?

我知道Node.js擅长保持大量的同步持续连接,例如,许多聊天室的聊天室。 我想知道如何实现这一点。 我的意思是无论如何它使用TCP / IP封装的底层操作系统,为什么它可以处理永久连接,以至于其他人不能? 它有什么神奇的东西?

在收听特定端口时接收广播的数据包

当通过dgram.createSocket('udp4');设置套接字时dgram.createSocket('udp4'); 而不绑定到一个特定的端口,我收到广播的数据包发送到255.255.255.255但是,当我绑定到我的接口的特定IP相同的套接字this.server.bind(67, host); 我不会收到这些广播的数据包。 这是一个正常的行为?

TCP和Node.js的实时多人游戏原则

我一直在阅读关于多玩家networking的Valve 文章,这篇文章是从Yahn Bernier 2001年的论文中提出的,该文章称为客户端/服务器游戏内协议devise和优化中的延迟补偿方法 。 我正在使用通过socket.io连接到客户端的node.js服务器来制作一个实时的多人游戏,关于以下原则我有几个问题: 实体插值 [Interpolation]可以防止抖动,这通常会导致通过caching服务器更新,然后播放它们之间的平滑插补之间的差距。 它还可以防止丢包造成的故障。 客户端预测 预测是客户端的概念,预测本地玩家的行动的影响,而不用等待服务器来确认他们。 实体的预测状态在服务器命令到达时被testing,直到检测到匹配或不匹配为止。 滞后补偿 延迟补偿是服务器使用播放器延迟来处理[用户input]时的后退时间的概念,以便查看玩家在命令发送时看到的内容。 与预测相结合,滞后补偿可以帮助打击networking延迟到几乎从攻击者的angular度消除这一点。 这些原则是否适用于TCP,和UDP一样,在实现上会有什么不同? 我可以看到实体插值不需要防止数据包丢失,但是这样做。 我甚至可以使用UDP和Node.js在服务器和Web浏览器之间进行通信,反之亦然? 既然论文已经十多年了,这些原则还在使用还是有其他技术出现呢? 任何帮助将非常感激。

操作系统如何在接受同一套接字的多个进程之间进行负载平衡?

我正在阅读Node.js中的集群模块的文档: http://nodejs.org/api/cluster.html 它声称如下: 当多个进程都accept()相同的底层资源时,操作系统将非常有效地在它们之间进行负载均衡。 这听起来很合理,但是即使经过了几个小时的search,我还没有find任何可以证实的文章或者任何东西,或者说明这个负载平衡逻辑如何在操作系统中工作。 另外,什么操作系统正在做这种有效的负载平衡?

长期投票的严重缺点?

对于交互式Web应用程序,像Websockets这样的东西越来越受欢迎。 然而,由于客户端和代理世界并不总是完全兼容,所以通常会使用像“Socket.IO”这样的复杂框架,对于任何可能会禁用其他框架的情况隐藏几种不同的机制。 我只是想知道一个正确实现的长轮询的缺点是什么,因为今天的服务器比如node.js很容易实现,并依赖于很好的支持旧的http技术(尽pipe长时间的轮询行为本身可能会打破它)。 从高层次来看,长时间轮询(尽pipe有一些额外的开销,适用于中等stream量的应用程序)类似于WebSockets所做的真正的推送行为,因为服务器每当他喜欢(尽pipe有一些超时/心跳机制)实际发送它的答案。 所以我们有更多的开销,因为我猜测TCP / IP更多的确认,但没有像频繁轮询那样的持续stream量。 而使用事件驱动的服务器,我们将不会有线程开销来阻止连接。 那么是否还有其他困难的缺点,迫使像聊天这样的中等stream量应用使用WebSockets而不是长时间轮询?