Tag: java

UDP在Node.js中发送性能

我正在用一个Java UDP客户端进行基准testing,该客户端可以尽可能快地连续发送100个字节的数据报。 它是使用java.nio.* 。 testing表明,它能够实现每秒220k数据报的稳定吞吐量。 我没有使用服务器进行testing。 客户端只是将数据报发送到本地主机上的一些未使用的端口。 我决定在Node.js中运行相同的testing来比较这两种技术,看到Node.js执行速度比Java慢10倍 ,这令人惊讶。 让我引导你通读我的代码。 首先,我使用Node.js的dgram模块创build一个UDP套接字: var client = require('dgram').createSocket("udp4"); 然后我创build一个使用该套接字发送数据报的函数: function sendOne() { client.send(message, 0, message.length, SERVER_PORT, SERVER_ADDRESS, onSend); } variablesmessage是一个由应用程序启动时具有一百个字符的string创build的缓冲区: var message = new Buffer(/* string with 100 chars */); 发送函数只是递增一个variables,该variables保存到目前为止发送了多less个数据报。 接下来,我有一个使用setImmediate()不断调用sendOne()的函数: function sendForever() { sendOne(); setImmediate(sendForever); } 最初我尝试使用process.nextTick(sendForever)但是我发现它总是把事件队列放在事件队列的顶端,甚至在IO事件之前,正如文档所说 : 它在任何其他I / O事件(包括定时器)在事件循环的随后滴答中触发之前运行。 这样可以防止发送 IO事件的发生,因为nextTick在每次打勾时都会不断地将sendForever放在队列的顶端。 队列随着未读IO事件增长,直到它使Node.js崩溃: fish: Job […]

Java + NodeJS通过套接字进行通信:坏主意?

我喜欢NodeJS的一些function,特别是JQuerification,通过socket.io的websocket兼容性,view和css引擎,我不能使用JSP(当然还有asynchronous调用)。 至less,据我所知。 所以我打算在后端创build我的应用程序将是Java,前端将由NodeJS生成。 前端表单将数据发送到NodeJS,NodeJS将通过NodeJS和Java后端之间的套接字连接将数据传递到Java后端。 所以NodeJS基本上就像前端和Java后端之间的中间件。 这将是一个非常大的应用程序,我的计划看起来令人兴奋,但我会恨我未来的自我沿着这条路线? 我所拥有的优势是可以拥有大量的实时图表和仪表板,并增强与表单的交互。

Android到node.js的通信

我看到有几个类似的线程,但我找不到我的答案。 我正在做和Android应用程序,我想使用节点作为实时通信的服务器。 我真的无法得到这个工作。 也许我做了很多很多错误的事情,但我想尝试理解。 我的服务器很简单 var http = require('http'), io = require('socket.io'), server = http.createServer(function(req, res){ res.writeHead(200, {'Content-Type': 'text/html'}); res.end(':)'); }); server.listen(8080); var socket = io.listen(server); socket.on('connection', function(client){ client.send("hello"); console.log("connected!"); }); 和这个作品…我尝试了一个Web应用程序,我可以连接。 但是我不能用java 我试过kryonet,但我得到一个exception,如“连接,但注册超时” 我试过weberknecht我得到一个“错误,同时创build套接字ws://184.xxxxxx:8080” 我尝试了TooTallNate ,没有运气,只是调用onClose方法。 我试过jWebSocket,但我不能得到它的工作… 所以我在这里,寻求帮助,有没有人知道如何做到这一点? 有什么build议? PS TooTallNate我使用这样的东西: Net net = new Net(new URI("ws://184.xxxxxx:8080"),WebSocketDraft.DRAFT76); 问题可能在这里吗? 更新:我处理了这个! 经过一个良好的睡眠,我有了这个想法,我使用socket.io,坏主意…现在我使用节点Websocket服务器与weberknecht 。 服务器如下所示: var ws […]

Nodejs:在哪里或如何编写复杂的业务逻辑?

最近我介绍了node.js和cool包,比如express和jade。 我有几个问题一直敲我的门: 如果我selectnode.js来构build我的下一个网站,我将使用JavaScript来编写我的服务器端复杂逻辑? 但我不认为你可以比较JavaScript与Java或Python来编写服务器端代码,因为它们拥有如此浩瀚的图书馆。 node.js真的是为了它吗? 或者我错过了什么? 我可以从node.js调用Java或Python吗?

如何使用maven部署node.js应用程序?

我们的大部分团队都由java开发人员组成,因此整个构build/部署/依赖pipe理系统build立在maven之上。 我们使用CI,所以每个构build过程都运行unit testing(前端的业力和幻影,后端的茉莉节点)。 我设法为此configuration一个业力maven插件。 这并不能解决在build上从package.json下载node.js依赖关系的问题。 我需要在现有环境中部署我的node.js / express应用程序,所以完美的场景是: 从回购拉(使用maven构build自动完成) npm install (即 – 从节点包registry中下载依赖项) 运行testing 我试图为mavenfind一个nodejs包,但说实话 – 作为一个node.js开发人员,我不觉得在select正确的工具方面非常自信,因为我无法区分一个不好的maven插件一个体面的。 也许使用shell插件并从terminal调用npm install是一个更好的select? 你怎么看?

使用zeromq与Python与Java的node.js性能

我已经使用node.js,Python和Java为zeromq写了一个简单的echo请求/回复testing。 代码运行一个100K请求的循环。 该平台是一个5yo的MacBook Pro,2个内核和运行Snow Leopard的3G内存。 node.js一直比其他两个平台慢一个数量级。 Java: real 0m18.823s user 0m2.735s sys 0m6.042s Python: real 0m18.600s user 0m2.656s sys 0m5.857s node.js: real 3m19.034s user 2m43.460s sys 0m24.668s 有趣的是,在Python和Java中,客户端和服务器进程都使用大约一半的CPU。 node.js的客户端使用了大约一个完整的CPU,而服务器使用了大约30%的CPU。 客户端进程也有大量的页面错误导致我相信这是一个内存问题。 另外,在10K请求节点只有3倍慢; 它的运行时间肯定会减慢。 这是客户端代码(请注意,process.exit()行也不起作用,这就是为什么除了使用time命令外还包含一个内部定时器的原因): var zeromq = require("zeromq"); var counter = 0; var startTime = new Date(); var maxnum = 10000; var socket = zeromq.createSocket('req'); socket.connect("tcp://127.0.0.1:5502"); […]