Tag: tcp

pipe理node.js中基于命令的TCP套接字API的连接

我构build了一个基于expresss.js的RESTful API,通过使用JSON的TCP套接字与远程服务器进行通信。 请求的URL被转换成适当的JSON消息,新的TCP套接字打开并且发送消息。 然后,当接收到来自同一连接的消息时,事件被触发,JSON回复将被计算,并且由于GET请求返回新的JSON消息。 可能的path: asynchronous(当前正在使用) – 为每个请求打开到服务器的连接。 同步 – 创build一个包含所有请求的队列,并等待响应,阻止代码。 跟踪 – 一次发送所有请求,并asynchronous收到答案。 在请求上使用跟踪者ID来将每个请求与其答案关联起来。 什么是最好的方向去? 有没有什么共同的模式来解决这种应用?

TCP服务器:删除连接,而不是重置或响应?

在Node.JS中是否有可能以这种方式“删除”连接 客户永远不会收到回应(200,404或其他) 客户端永远不会被通知连接被终止(从来没有收到连接重置或stream结束) 服务器的资源被释放(服务器不应该试图以任何方式维护连接) 我在Solaris上特别询问了关于Node.JS HTTP服务器(它实际上只是复杂的TCP服务器),但是如果在其他操作系统(Windows,Linux)或编程语言(C / C ++,Java)我有兴趣。 我为什么要这个? 惹恼或放慢(可能是单线程)机器人,如phpMyAdmin探针 。 我知道这并不重要,但这些types的问题可以更好地帮助我学习我的程序的边界。 我知道客户端主机很可能重新传输连接的数据包,因为我从来没有发送重置。

如何在NodeJS中testingsocket.setKeepAlive

我试图在NodeJS中testingsetKeepAlive()的function。 我在同一本地networking中的不同机器上运行Server.js和client.js。 然后,我closures了客户机上的无线连接(打破了互联网连接)。 15分钟后,仍然没有消息。 这是为什么? 没有设置KeepAlive()的工作? 这里是服务器和客户端的代码: Client.js var net = require('net'); var HOST = '192.168.0.16'; var PORT = 8333; var client = net.connect(PORT, HOST, function connected(){ console.log('connected'); }); client.setKeepAlive(true, 1); client.write('hi server'); client.on('data', function(data) { console.log('Received' + data); }); client.on('close', function(){ console.error('connection closed'); )}; client.on('error', function(err){ console.error('error', err); }); Server.js var net = require('net'); […]

node.js服务器泄漏TCP连接?

注意:请参阅我在post末尾的修改。 我有一个node.js(快速)服务器,它服务大约15-30个请求/秒。 我提供了一些简单的JADE模板和一个Durandal SPA应用程序,大部分的请求都是为了简单的JADE模板。 一切都会好几分钟,但服务器开始在一段时间后得到EMFILE错误,最终崩溃。 排除故障后,我发现lsof -i -n -P | grep node的输出 一段时间后lsof -i -n -P | grep node包含了这么大量的行: node 8800 my_user 13u IPv4 906628 0t0 TCP 172.xxx:3000->xxxx:44654 (ESTABLISHED) node 8800 my_user 14u IPv4 908407 0t0 TCP 172.xxx:3000->xxxx:13432 (ESTABLISHED) node 8800 my_user 15u IPv4 908409 0t0 TCP 172.xxx:3000->xxxx:38814 (ESTABLISHED) node 8800 my_user 19u IPv4 906622 […]

Tcp用express表示在nodejs中延迟了ack

我正在为nginx做压力testing,并使用nodejs后端。 我发现延迟Keepalive。 我从testing中删除了nginx,并且遇到同样的问题。 我在用着: ApacheBench,版本2.3 节点v0.8.14。 Ubuntu 12.04.1 LTS Express 3.0.3 源代码是: var express = require('express'); var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died'); }); } else { […]

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。 感谢大家! 🙂

Nodejs TCP连接客户端端口分配

我使用nodejs( networking模块 )在客户端和服务器之间创build了tcp连接。 服务器正在侦听已经预定义的端口,并且客户端正在连接到该端口。 据我了解端口为客户端dynamic分配的节点? 那是对的吗? 什么样的algorithm节点正在使用为客户端分配“随机”端口? 这是如何工作的,这是由节点还是由操作系统决定的? 是否有可能定义客户端将使用的静态端口? 是否可以定义客户端使用的端口范围? 注:我认为我发现之前stackoverflow上类似的主题讨论/问题,但我找不到它了。 我会apprecaite如果你能分享任何可靠的资源有关这个问题。

亚马逊豆蔻tcp应用程序没有响应

我在aws linux ec2实例上运行一个nodejs tcp应用程序。 基本代码如下 var net = require('net'); net.createServer(function(socket){ socket.write('hello\n'); socket.on('data', function(data){ socket.write(data.toString().toUpperCase()) }); }).listen(8080); 它的运行就像魅力,但我想在aws beanstalk上运行这个相同的应用程序(只是为了获得自动缩放的好处)。 你是啊,我不是一个忍者。 顺便得到公共ip的beanstalk我使用aws VPC。 豆荚应用程序连接到VPC =检查。 VPC 8080端口打开=已检查。 将硬编码端口8080更改为process.env.PORT =选中。 但如果我在端口8080 ping任何东西,它不会从应用程序返回'你好'。 我错过了什么?

创buildTCP服务器时连接的标识是什么?

我正在使用node.js来创build一个TCP服务器,每个连接将是持久的。 已知node.js是单一进程,如何区分每个连接? 有没有像连接ID?

如何在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?