Tag: tcp

Node.js TCP套接字会话

我有多个客户端从应用程序连接到Node.js TCP套接字服务器。 我想知道一个安全的方式来pipe理他们的会议。 用户名+密码通过套接字传递给服务器。 服务器确认这是正确的。 我相信我现在需要生成一个唯一的令牌发送回客户端。 现在,如果用户closures应用程序,然后再打开它,这个令牌可以传递给服务器,因此服务器将确认用户再次被authentication。 但是,这个令牌可能被其他人用来访问这个人帐户。 有没有办法来防止这一点? 有没有更安全的方法(同时仍然保持用户无需再次login进行身份validation的能力)? 你将如何处理来自使用相同login的其他设备的连接。 他们是否得到不同的标记或相同的标记? 非常感谢。

NodeJS将一个ws对象传递给一个subprocess

我试图将ws对象传递给subprocess。 在“send”函数下的subprocess( https://nodejs.org/api/child_process.html )下的节点文档中,它表示第二个参数可以是子对象可以共享的TCP对象。 当我尝试传递一个ws对象时,它说:“抛出新的TypeError('这个句柄types不能被发送');”。 我想这是因为它是一个WS对象,而不是一个TCP对象,但我想知道是否有无论如何实现与WS对象,而不是一个TCP对象相同的效果…? 由于ws只是符合websocket标准的tcp对象的一个​​包装。

Node.js TCP传入消息拆分成包

通过TCP连接在Node.js中接收大型数据包时遇到问题。 似乎缓冲区中有一个大约55kB的上限。 当我收到大量的数据(大约70-80k),它分裂了这个数据。 现在,我已经使用UDP套接字,我知道如何期待on('data', function(){})事件和如何期待一个on('end', function(){})接收到,与TCP的问题是,我从来没有收到一个on('end', function(){})事件,服务器(在C#中)永远不会发送FIN数据包。 这是由于我要求保持sockets活着和正在进行(我们不想closures它)。 是否有某种方式发送FIN包,从C#到Node.js之一,而不必closures/closures套接字? 或者,可选地,是在节点本身内部触发on('end', function(){})事件的方式吗? 问候。 编辑:加起来的问题,比如说我有2个客户端试图通过TCP套接字获取信息。 首先连接,并得到一个巨大的请求(在这里的大小没有问题)。 但是,当这个请求被处理的时候,另外一个请求是一样的,因为TCP连接是通过节点的,它们使用相同的套接字。 有什么办法来区分请求吗? 或者我将不得不为TCP服务器的每个请求build立一个套接字?

通过Socketstream式传输一系列JSONstring

这可能更多的是关于套接字/ TCP的行为,比node.js。 我在node.js中编写了一个服务器,它通过套接字(而不是HTTP)接收一系列的JSON对象。 客户端(iOS应用程序)通过此套接字stream式传输JSONstring。 每个JSONstring的大小都不相同(从几个字节到几个K字节),因此计时。 每个JSONstring都将用一个“写入”操作发送。 当我从套接字接收数据时,我调用JSON.parse()。 简单的testing案例很好,但我不确定这是否足够。 我想知道是否需要担心以下情况:(1)'data'包含多个JSON对象(2)单个JSON对象通过多个数据发送。

Node.js套接字服务器如何知道客户端连接到哪个IP或域?

如何知道客户端在node.js TCP Server中连接的IP /主机名? var server = net.createServer(function (stream) { // The server is behind a firewall, // how can I know how the client connect to this server? console.log(stream.localAddress); }); server.listen(21, '0.0.0.0'); 谢谢

Node.JS同一台服务器上的Socket服务器和连接速度变慢

我可能在这里做错了什么,但基本上我有一个服务层,拦截发送请求到一个特定的url。 这是非常重要的,所以我把它从主服务器上分离出来。 我认为让服务层接受http请求并通过连接的任何stream发送结果XML数据包是最简单的。 那么,这是技术上的工作,但我遇到的问题是,服务器和客户端都在同一台机器上,似乎stream.write正在填满内核缓冲区,并减less了它之间的时间服务层到什么时候才真正到达客户端。 在服务器端 在连接上,我将stream推送到一个连接数组中,我还设置了一个时间间隔来确保我在过去的12秒钟内(心跳)收到了一条消息。 在接收我迭代stream数组,确保它是可写的,并写入XML数据包。 在客户端 每8秒写一次“心跳”,以确保不会断开连接 在传入的消息我parsingXML到一个JSON对象,并在服务器内处理。 没有什么关于这个似乎离谱,但我可能会错过一些东西。

Node.js服务扼杀和死亡一天一次

本周每天我都重新开始我们的节点服务。 每次它只是退出以下消息: node.js:134 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: ETIMEDOUT, Connection timed out at Socket._readImpl (net.js:163:14) at Socket._onReadable (net.js:633:22) at IOWatcher.onReadable [as callback] (net.js:177:10) 我很难辨别出我的代码中的一部分是为这个错误负责的,正是为什么这个错误非常严重以至于使得节点退出。 无论如何,我已经做了一些四处搜寻,并认为这可能只是一个未被捕获的错误事件。 我已经添加了一些('错误')侦听器到每个服务器实例与一些定制的日志消息,以确保它被捕获,但无济于事,我仍然必须今天与常规的错误信息工作..(和是不是真的有这样一个事情,就像必须被抓住的错误事件?) 一个简单的连接超时不应该真的崩溃整个服务。 该服务的主要目的是保持一个开放的TCP连接到一些连接客户端,并能够推出命令(这就像一个embedded式产品的私人僵尸networking)。 所以实际上95%的时间我们只是闲置我们的TCP套接字,并发送保持活动的数据包。 因此,客户可以随时断开连接而不中断其他连接客户端的服务。 我们正在使用最新的稳定的分支节点v0.4.13-pre并在ubuntu服务器上运行。

基本的smtp服务器在node.js

我试图在node.js中编写一个愚蠢的(braindead)smtp服务器,作为testing其他应用程序的存根服务器。 我有一套基本的回应,而且它在telnet很好用。 然而,当我的PHP / Codeigniter应用程序使用它,它运行得如此缓慢,以至于无用,我偶尔会fwirite() broken socket错误。 该应用程序运行良好使用真正的SMTP服务器 使用telnet时,node.js应用程序运行良好 我是否缺less一个关键或明显的步骤? 有什么关于套接字或系统指针资源,我不正确的处理? 这是非常快速和肮脏的,但这是重点: var net = require('net'); net.createServer(function (socket) { var mode = 'nodata'; socket.on('data', function(data) { var data_string = data.toString(); console.log(data_string); if (mode == 'nodata') { if (data_string.substring(0, 4) == 'EHLO') { socket.write('hello ' + data_string.substring(5, data_string.length – 1) + '\r\n'); } else if (data_string.substring(0, […]

node.js缓冲tcp数据和分隔符

我试图写一个快速和肮脏的TCP服务器,并与分隔符有问题。 根据这个问题,我缓冲传入的数据,并寻找分隔符(在这种情况下'\ r \ n'。但是,当我telnet和发送消息 foo\r\nbar 下面的服务器不能识别中间的分隔符,但在最后看到一个\ r \ n-我是在telnet的印象下发送一个\ n只。 当我通过ruby脚本发送消息时,即使在消息中存在\ r \ n,也不会在任何地方识别分隔符。 有一些jsstring处理行为,我需要被清除吗? var net = require("net"); var http = require('http'); var HOST = '127.0.0.1'; var PORT = 6969; var TCP_DELIMITER = '\r\n'; var TCP_BUFFER_SIZE = Math.pow(2,16); net.createServer(function(sock) { console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort); // To buffer tcp data see: // […]

Node.js TCP套接字在轮询前等待几秒钟? (net.createServer)

Node.js中有一个非常简单的TCP套接字 它连接到以XML格式发回数据的设备。 有一个C#程序可以做到这一点,但是我必须在Node.js中构build它。 所以,当设备发送消息时,我在5秒钟之后得到响应! C#程序在1秒或2秒后获取。 它看起来像“TCP套接字”具有特定的轮询频率或某种“等待function”。 这甚至可能吗? 每次显示传入的消息。 它还显示“sock.on('close')”的退出消息 看来5秒钟后“服务器”自动closures。 见底线“console.log('[LISTENER]连接暂停');” 之后,传入的消息得到正确显示。 我的代码有什么问题? // Set Node.js dependencies var fs = require('fs'); var net = require('net'); // Handle uncaughtExceptions process.on('uncaughtException', function (err) { console.log('Error: ', err); // Write to logfile var log = fs.createWriteStream('error.log', {'flags': 'a'}); log.write(err+'\n\r'); }); /* ————————————————- Socket TCP : TELLER ————————————————- */ […]