Articles of tcp

如何使用NodeJS中的http模块在同一端口上打开IPv4和IPv6套接字?

我正在运行以下的NodeJS服务器代码: var express = require('express'); var path = require('path'); var fs = require('fs'); var bodyParser = require('body-parser'); var http = require('http'); var ejs = require('ejs'); var app = express(); //configure the app app.set('port', process.env.PORT || 3000); // set the view engine to ejs app.set('view engine', 'ejs'); app.use(bodyParser.raw()); app.use(bodyParser.urlencoded({ extended: true })); app.use(function(req, res, next) { […]

使用server.listen()处理错误(如EADDRINUSE)

我一直困惑/烦恼, server.listen()不采取错误优先callback: server.listen(port, function(){ // the first argument is *not* a potential error }); 一定是一个艰难的devise决定,不要将错误传递给listen()。 看来我们应该在这里处理错误: server.on('error', (e) => { if (e.code === 'EADDRINUSE') { console.log('Address in use, retrying…'); } }); 但我担心的是, server.on('error' )可能会触发多次,而不仅仅是当服务器启动。 如果EADDRINUSEtypes的错误被引发并返回到server.listen()callbackEADDRINUSE将会更加方便。 有一些我可以用来传回错误的模式,如下所示: exports.startServer = function(data, cb){ server.listen(data, cb); server.once('error', cb); }); 上面的代码是否安全,这样cb才会只发一次? 这不安全! 大声笑。 因为我们需要删除“错误”侦听器,如下所示: exports.startServer = function(data, cb){ let onError […]

什么AWS服务用于nodeJs原始tcp套接字聊天服务器

我正在开发一个基于回合的在线手机棋盘游戏,之前我使用Heroku为我的socketIo nodeJs服务器。 现在我已经转移到原始的Tcp套接字,因为我不想要开销,我想更加控制。 现在的问题,根据Heroku支持,“你不能直接打开一个任意的TCP连接到Dyno并发送数据”。 问题:我刚刚注册了AWS,由于AWS提供了大量的服务,对于我的nodeJs Tcp服务器,最好的解决scheme是什么? 我正在考虑EC2或无服务器的Web应用程序。 如果你有想法,请包括利弊。 先谢谢你。

在3Gnetworking上监听来自连接对象的TCP连接

我有一个连接的对象,在3Gnetworking上工作,并发送数据到我的IP在一个可选的端口。 我想读一个node.js程序上的这个对象发送的数据,因为我的服务器上的所有API都在node.js上 为此,我尝试创build一个“networking”服务器,如下所示: var net = require('net'); var server = net.createServer(function (socket) { socket.on('data', function (data) { var StrData = data.toString('ascii'); fs.appendFile("test.txt","data received : "+ StrData, function (err) { if (err) throw err; console.log(StrData); }); }); }); server.listen(2000, '0.0.0.0'); 我将所有的数据发送到我的“test.txt”文件的想要的。 问题是,在接收到第一个数据后,我的服务器似乎closures了连接,所以我的连接对象每次都必须创build另一个连接,只能发送第一个数据。 我的问题是: 我怎样才能让连接打开,使对象可以发送所有的数据? 我也尝试过'socket.io'和'http',但我无法得到我想要的。

通过tcp与节点js发送数据

我想通过tcp连接连接到服务器,并使用nodejs发送这样的数据并处理响应: 0000 | 00 00 00 00 00 00 00 00 4A 96 70 27 C4 7A E5 51 0010 | 14 00 00 00 78 97 46 60 3E 05 49 82 8C CA 27 E9 0020 | 66 B3 01 A4 8F EC E2 FC 但是我不知道我该怎么做,也不知道这个。 这些数据是什么样的? 我应该使用哪个包来发送这些数据? 我已经使用net包,但我没有得到任何结果。 我不在乎如何创build这些数据,我有这些数据作为string。

node.js – 与TCP服务器通信(数据== JSON)

我是node.js的新手,在上个周末深入了解了各种示例和小教程。 现在我想为我的局域网启动一个小项目,并有几个问题让我自己走向正确的方向。 build立: 我有我的局域网上运行的服务器服务。 可以通过TCP和/或HTTP(可以启用或禁用TCP或HTTP或两者都可以)在特定端口上与该服务进行通信,并通过JSON在请求上发送和接收数据。 我基本上想要做的是创build一个基于该服务的node.js的web界面,接收和发送来自该服务的webbrowser的JSON数据。 问题: 我已经知道如何设置一个基于node.js的http服务器。 但是现在我一直在想如何创build一个基于node.js的客户端,它位于服务和webbrowser客户端之间,通过客户端到服务器之间的数据,反之亦然。 像路由器或代理。 这是一个基于客户端(网页浏览器)观点的基本scheme: 发送:Webbrowser请求 – > node.js路由 – >服务接收 接收:Webbrowser收到< – node.js路由< – 服务响应 问题: – 转到TCP或HTTP? (也许禁用HTTP服务器将省去一些资源) – 也许已经回答了这个职位 – 有没有适合我需求的node.js包? – 去一个框架(expression式?)或平原node.js就够了? – 任何提示赞赏:) 编辑: – 是否有可能在node.js中绑定像eth0这样的networking设备,而不是定义IP地址? 感谢您的帮助和最好的问候 cefra

在node.js中保持打开一个tcp套接字

我打开一个tcp连接到一个服务器很容易做到,但我需要一种方法来保持打开的套接字,而不必一次又一次地调用net.createConnection(port, host) 。 我想实现的是一个套接字服务器,它接受多个连接,然后通过一个套接字通道请求,如上所述。 然后我需要将响应传递给正确的套接字。 但是,我唯一的问题是维护一个开放的套接字,我试图在侦听服务器代码之外创build。 我已经用Singleton模式接近它来创build套接字.. var Singleton = (function() { var socket = null; function connectToHost(port, host) { socket = net.createConnection(port, host); return socket; } return { connectToHost: connectToHost }; })(); 但从我可以看到,在事件('结束')该套接字不再可写。 如果我重新连接sockets。 socket.on('end', function() { socket = Singleton.connectToHost(port, host); }); Event('end')会发生同样的事情。 我怎么能这样做,以便我可以创build和维护一个套接字连接?

彗星服务器和networking延迟时间

对于一个社交网站,我们使用基于node.js的慧星服务器作为即时通讯工具,一切正常,我们只有一个问题,如何解决延迟问题到澳大利亚和新西兰,我们有310毫秒到440毫秒的RRT。 一个想法是拥有本地服务器,但是在这种情况下,他们必须连接到澳大利亚用户能够与英国用户通信的主服务器。 这个彗星连接也会有较高的延迟,但本地用户可以快速聊天,这将是大多数情况下。 有没有人有更好的主意,然后使用本地彗星服务器?

node.js让大量的tcp客户端大失所望

我试图从服务器发送一堆tcp客户端。 为了减less响应上的服务器负载,我想分开保持活动。 如果我有3000个tcp客户端,并且60秒保持活跃的时间间隔,那么我需要在60年代错开保持活跃的信息,并且每秒发送50个消息。 假设: 大量的tcp连接(以千计) TCP连接持续存在,预计可以在最less的几个小时内激活 服务器需要在60秒之内知道客户端是否不再连接 来自服务器和客户端的其他信息将被反复发送 保持活着从客户端返回消息包含有用的数据(我认为排除UDP) 目前,我的想法是存储我的TCP连接作为一个标准的JavaScript对象,有一些id映射到一个特定的连接本身。 然后,每秒钟,我得到这个对象的键的数组,并发送保持活跃的一部分这些。 这是一个好方法吗? 有更好的方法还是我应该考虑的其他事情? 我的初始刺戳问题的示例代码: var KEEP_ALIVE_INTERVAL = 1000; // time between groups var KEEP_ALIVE_CYCLE = 3; // number of groups var tcp_conns = { a:"a", b:"b", c:"c", d:"d", e:"e", f:"f", g:"g", h:"h", i:"i" }; var intervalCounter = 0; setInterval(function() { console.log("sending keep alives intervalCounter="+intervalCounter); var […]

Node.js AppFog上的TCP Socket服务器

鉴于以下在AppFog上运行的简单的TCP套接字服务器,无论客户端发送什么,都会回应。 var net = require('net'); var server = net.createServer(function (socket) { socket.write('Echo server\r\n'); socket.pipe(socket); }); var port = process.env.VCAP_APP_PORT || 80; server.listen(port); console.log('Server running at ' + port); 我似乎无法连接到服务器。 它在我的本地开发机器上工作正常。 AppFog支持我所要做的吗? 我对Node.js比较陌生,所以我不能肯定地说代码是正确的。