Tag: 套接字

在客户端closures套接字会导致nodejs服务器崩溃

在C客户端上我这样做: socket() connect() on port 6969 send() //I have seen that I didn't call recv so nodejs try me to send data but My program was gone and finally closesocket() 在nodejs服务器上,我收到消息,以便build立连接: const port = 6969; var net = require('net'); var server = net.createServer(function(connection) { console.log('client connected'); connection.on('close', function() { console.log('conn closed'); }); connection.on('end', function() { […]

套接字超时! Telnet连接使用节点telnet-client问题

我的要求是从节点js连接到Telnet客户端。 我正在使用telnet-client包 我正在使用此代码进行连接 var Telnet = require('telnet-client') var connection = new Telnet() var params = { host: '127.0.0.1', port: 23, shellPrompt: '/ # ', timeout: 1500, // removeEcho: 4 } connection.on('ready', function(prompt) { connection.exec(cmd, function(err, response) { console.log(response) }) }) connection.on('timeout', function() { console.log('socket timeout!') connection.end() }) connection.on('close', function() { console.log('connection closed') }) connection.connect(params)` 但它总是返回“套接字超时!” […]

在水平伸缩的WebSocket服务器上负载均衡套接字?

每隔几个月,当我想通过一个涉及套接字的个人项目时,我发现自己的问题是: “如何在dynamic水平扩展的WebSocket服务器上正确加载平衡套接字? 我理解了横向扩展WebSockets背后的理论,并使用pub / sub模型将数据获取到保存特定用户的套接字连接的正确服务器。 我想我理解的方法是用最less的当前套接字连接来有效地识别服务器,我也希望路由一个新的套接字连接。 我不明白的是如何有效地将新的套接字连接路由到您select的低套接字计数的服务器。 我不认为这个答案会绑定到一个特定的服务器实现,而是可以应用到大多数服务器。 我可以很容易地看到我自己用vert.x,node.js,甚至完美实现了这个。

为什么我没有收到一个新的套接字用户连接的console.log?

我或多或less地遵循socket.io文档,并试图将其应用于我稍微不同的项目,但我相信我犯了一些错误。 我使用了快速生成器来创build我的项目的骨架,因此我得到了app.js文件,www文件和路由文件。 我把这个代码放在www文件中: var io = require('socket.io')(http); console.log('Socket is running!'); io.on('connection', function(socket){ console.log('A User Has Connected: ' + socket.id); }); 这个代码在我的页脚文件中: <script src="/socket.io/socket.io.js"></script> <script src="/javascripts/jquery-3.2.1.min.js"></script> <script src="/javascripts/javascript.js"></script> </body> </html> 这在我的JavaScript文件中: $(document).ready(function(){ var socket = io(); }); 现在我明白,当一个请求发出时,控制台应该logging“一个用户已连接:”+套接字的ID,但我没有得到任何比“套接字正在运行!”以外的任何东西。 我假设我失去了一些东西,但无法弄清楚,文档使用相同的代码。 var port = normalizePort(process.env.PORT || '8087'); app.set('port', port); server.listen(port); server.on('error', onError); server.on('listening', onListening);

为什么Node.js HTTP服务器不响应来自Python的请求?

我有一个工作的HTTP node.js服务器。 然后我在python上创build了一个程序,它使用套接字模块连接到上面的服务器 请暂时不要介意try和except语句。 代码的connectTO()函数就像任何其他代码一样简单地连接到一个服务器,除了它处理一些错误。 然后程序发送消息"hello" 。 接下来在while循环中,它重复地等待一个答案,当它接收到一个答案时,它将打印答案。 当我从python连接到Node.js http服务器时,我得到的消息是: "You have just succesfully connected to the node.js server" 如果你看我的代码意味着s.connect(())命令是成功的。 我的问题是,当一个请求发送到服务器,它应该输出一个消息,但它没有。 我也尝试向服务器发送消息,在这种情况下,服务器发回以下消息: HTTP / 1.1 400错误的请求 那为什么服务器没有响应请求? 为什么拒绝他们? Python客户端: from socket import AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR import threading, socket, time, sys s = socket.socket(AF_INET,SOCK_STREAM) def connectTO(host,port): connect = False count = 0 totalCount = 0 […]

通过套接字发送命令,但每次都等待响应(Node.js)

我需要通过telnet发送几个命令到服务器。 如果我尝试在每个命令之间没有时间延迟地发送它们,那么服务器就会吓坏了: var net = require('net'); var conn = net.createConnection(8888, 'localhost'); conn.on('connect', function() { conn.write(command_1); conn.write(command_2); conn.write(command_3); //… conn.write(command_n); }) 我猜服务器在发送命令n + 1之前需要一些时间来响应命令n 。 一种方法是写一些东西给日志,并假装“等待”: var net = require('net'); var conn = net.createConnection(8888, 'localhost'); conn.on('connect', function() { console.log('connected to server'); console.log('I'm about to send command #1'); conn.write(command_1); console.log('I'm about to send command #2'); conn.write(command_2); console.log('I'm […]

如何仅使用Net模块(不是socket.io)将消息发送到node.js中的单个客户端

简单的代码: process.stdin.resume() process.stdin.setEncoding('utf8'); var server = createServer(); server.listen(9999); server.on('connection',function(sock){ console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); process.stdin.on('data',function(send){ sock.write(send); }); } 当从10.10.10.1和10.10.10.2接收到连接时,在terminal上显示“CONNECTED:10.10.10.1:xxx”和“CONNECTED:10.10.10.2:xxx” 发送消息给客户端,我用sock.write(发送)..但是,所有的客户端收到消息 我如何发送消息给特定的客户端。 从谷歌search有很多socket.io相关的文件(解决scheme)..但是,在使用socket.io之前,我想知道node.js本身。 (或JavaScript本身?) 在阅读Vadim的评论之后,我在下面写下了更多的代码。 完整的工作代码。 我添加两件事。 根据Vadim的评论,添加属性sock.id和使用属性sock.remoteAddress,发送服务器的stdin消息 10.10.10.1客户端 var net = require('net') process.stdin.resume() process.stdin.setEncoding('utf8'); var server = net.createServer(); server.listen(9999); server.on('connection',function(sock){ sock.write('input your ID: ',function(){ var setsockid = function(data){ id=data.toString().replace('\r\n',''); console.log('ID:'+id+' added!!') sock.id=id sock.removeListener('data',setsockid); }; sock.on('data',setsockid); sock.on('data',function(data){ d=data.toString().replace('\r\n',''); console.log(sock.id+' say: […]

Node.JS客户端应用程序模拟1000 / +客户端连接

我试图做一个基于控制台的node.js应用程序模拟1000 / +客户端连接到现有的基于node.js的TCP服务器应用程序。 更新:使用此代码的当前版本^我得到一个错误TypeError: cannot call method 'write' of undefined : connx[connNos].Write(str) 。 我想我将不得不重新思考/重写这段代码; 任何指针都是受欢迎的。 直到现在,这是我想出来的,但是这并不是暗示的: var net = require('net'); var HOST = '127.0.0.1'; var PORT = 7000; var timeout = 30000; var connx = []; for(var connNos = 0; connNos < 10; connNos++){ connx[connNos] = net.createConnection(PORT,HOST); //connx.push(connx[connNos]); connx[connNos].on('connect', function(err){ console.log('Client: Connected'); }); connx[connNos].on('error', function(data){ […]

单线程事件驱动的web服务器(如node.js)如何在套接字级别上工作?

所以我不断地从朋友那里听到node.js如何使用单个线程完成所有的事情。 因此,我认为这意味着它通过循环线程接受新的套接字连接,等待一个“接受”方法(像大多数Web服务器),然后而不是委托它接收的套接字到一个新的线程处理,它以某种方式得到一个单线程来处理所有的连接。 每个人都告诉我,事实并非如此,事实上它是事件驱动的 – 所以事情只发生在需求上(即来自客户端的请求)。 但是,在最低级别的套接字上工作,我明白,通常如果你想立即回应请求,你需要有一个线程坐在和阻塞从它正在等待的套接字读取。 所以我的问题是,节点如何实现这个? 是否有一个后台线程不断检查后台中的每个“事件”套接字连续传入的数据,并在出现事件(即产生一个新线程处理它)时作出反应? 节点实际上是单线程的,还是我误解了单线程的含义?

使用Socket.io与Node.js,Express和Jade

我有一些麻烦,甚至只是用来testing一个客户端连接。 我尝试了很多东西,我想我的错误是,也许,当我做app.get函数。 我也试图在一个路由js文件中做到这一点,但它也不是决定性的。 所以这里是我不同的代码: App.js /** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var mongo = require('mongodb'); var monk = require('monk'); var db = monk('mongodb://xxxxx:xxxxx@ds051067.mongolab.com:51067/jdo'); var app = express(), server = http.createServer(app) , io = require('socket.io').listen(server); // all […]