Articles of 套接字

通过node.js套接字发送文本JSON如何处理'\ n \ r'符号

我有客户端 – 服务器应用程序,服务器端在Flash上​​的Node.js客户端,通过套接字彼此进行通信。 我写string化JSON到套接字,并在服务器上读取数据: socket.on('data', function(data) { console.log(JSON.parse(data.toString()); var json = JSON.parse(data.toString()) }); 一切正常,直到我开始发送包含'\ n \ r'的长文本消息到服务器JSON。 在那我得到错误: SyntaxError:意外的input结束 因为'\ n \ r'意味着包装的结束。 从文本中删除“\ n \ r”并不是我需要它正确显示文本的好方法。 请给我最好的方法来处理这个问题。 提前致谢。

Node.js:带控制序列的远程shell

我正在尝试使用Node.js编写远程shell。 这是我现在所得到的: 客户 var net = require('net'); var client = net.connect({port: 1234}, function(){ process.stdin.pipe(client); client.pipe(process.stdout); }); 服务器 var net = require('net'), spawn = require('child_process').spawn; var server = net.createServer(function(socket){ var sh = spawn('/bin/sh'); sh.stdout.pipe(socket); sh.stderr.pipe(socket); socket.pipe(sh.stdin); }); server.listen(1234); 它用简单的命令工作得很好,但是当我启动emacs或nano时,并不是因为控制序列没有被发送。 我想让它performance得像ssh一样。 这样的事情可能吗? 也许使用process.stdin.setRawMode(true)? 谢谢

连接拒绝节点js

Helle每个我希望testing套接字的身体,当我连接时,应该会出现一个警报,它工作在计算机上的节点js是在安装,而不是在其他计算机。 错误 : 无法加载资源:net :: ERR_CONNECTION_REFUSED http://xxx.xxx.xxx.xxx:8080/socket.io/socket.io.js未捕获的ReferenceError:io未定义 代码:服务器: var http = require('http'); var fs = require('fs'); var io = require('socket.io'); var server = http.createServer(function(req,res){ res.writeHead(200,{'Content-Type' : 'text/html'}); fs.readFile('./index.html',function(err,content){ res.end(content); }); }).listen(8080); io = io.listen(server) io.sockets.on('connection',function(client){ client.emit('connecte'); }); 客户: <html> <meta charset='utf-8'/> <head> <title>my first page</title> <script src="http://localhost:8080/socket.io/socket.io.js" ></script> </head> <body> <h1>It work</h1> </body> <script> var […]

套接字,从服务器发送事件到服务器

我有一个服务器设置和客户端 – >服务器事件工作很好,服务器 – >客户端事件也工作。 但是,当我正在写我的数据库我想发出一个服务器 – >服务器(或服务器 – >自我)事件,所以我可以处理asynchronous服务器事件(写入和读取到数据库)。 或者我错误地认为这是可能的在Socket.io环境? 套接字代码: io.on('connection', function(socket){ socket.emit('uuid', {id: uuid.v1()}); socket.on('add touchEvents', function (data) { if (typeof data !== 'object') return false; var conn = mysql.createConnection(connectionInfo); var checkExistsQuery = "SELECT COUNT(id) AS rows FROM `tbl_heatmap` WHERE UUID='"+data.uuid+"'"; conn.query(checkExistsQuery, function (err, rows) { if (err) { return false; } […]

callback函数socket.io + node.js

有一个客户端和服务器端代码: 客户: socket.on('connect', function() { showSystemMessage('Connected.'); socket.emit('setuser', wm, function(data){ console.log(data); socket.emit('whoisonline', wm, function(data){ getOnlineFriends(data); }); }); }); 服务器: io.on('connection', function(socket) { socket.on('setuser', function (data, cb) { cb(data); }); }); 我收到错误: TypeError:undefined不是第18行的函数 18号线: socket.on('setuser', function (data, cb) { cb(data); // Line 18 }); 然后我尝试了你的解决scheme,我得到了: TypeError: undefined is not a function in line 35 socket.on('whoisonline', function (data, […]

创build一个侦听“net”stream并使用Node.js进行回复的服务器

有人能给我一个关于如何创build一个监听stream的服务器的工作示例,并在有请求经过时回复。 以下是我到目前为止: var port = 4567, net = require('net'); var sockets = []; function receiveData(socket, data) { console.log(data); var dataToReplyWith = ' … '; // … HERE I need to reply somehow with something to the client that sent the initial data } function closeSocket(socket) { var i = sockets.indexOf(socket); if (i != -1) { […]

强制process.exit()vs手动closures所有打开的资源/套接字

说,我有一个连接到Web服务器的Node.js应用程序。 在某个时间点,我需要结束这个应用程序。 现在我有两个select: 只需运行process.exit() 或closures连接,清理,然后退出 当然,第一种方法更加蛮力,但也是less编码的方式;-)。 当我这样做的时候,有什么不利之处? 换句话说:这可能会导致未清理的资源,如仍然打开的套接字(无论是在客户端,还是在服务器上)? 这会影响服务器清理其连接资源的时间,还是立即完成?

如何使一个node.js应用程序在closures套接字后保持监听?

我试图build立一个node.js应用程序,可以接收连接,并且一旦套接字结束,仍然在监听端口9001。 我怎样才能做到这一点? 这里是我当前的代码(它不会在socket.end()之后closures,但不会接受任何其他连接): var net = require('net'); var mySocket; var server = net.createServer(function(socket) { mySocket = socket; mySocket.on("connect", onConnect); mySocket.on("data", onData); }); function onConnect() { console.log("Connected"); } function onData(command) { if (command == "exit") { console.log("Exiting"); mySocket.end(); } } console.log("Waiting for incoming connections"); server.listen(9001); 我试图添加另一个server.listen(9001); 在socket.end(); ,但我得到一个: Error: listen EADDRINUSE消息。 另外,这段代码是否能够同时接收来自不同地址的多个连接,并分别处理? 这是完整的代码。 当执行时,node.js接收来自Flash应用程序的4个命令,并正常工作(除了onConnect()函数似乎永远不会被调用)和“退出”。 命令正确closures套接字,但是如果我重新加载Flash应用程序,它不会连接到服务器 var […]

使用websockets手动连接到socket.io 1.x,进行容量testing

我正在使用一个nodejs express服务器,它使用socket.io与iOS客户端进行通信,并且在尝试testing有多less客户端可以同时连接和交换数据时遇到了一些麻烦。 我的目标是能够运行一个脚本连接到socket.io与数千个不同的会话,以及发送和接收数据,以了解我们的系统的规模。 目前,我们在Heroku上使用单个testing仪,但很快可能会考虑AWS上的其他选项。 我发现代码应该做我正在尝试做的早期版本的socket.io,如此,但有问题,因为它似乎v1.x有一个非常不同的握手协议。 我尝试了使用socket.io-client包,但试图连接多次只模拟使用一个会话,我需要模拟许多独立的用户。 我一直在挑选的socket.io客户端代码,但只有得到创build一个连接 – 我卡在发送数据部分。 如果任何人有任何知识或可以指出一些关于如何在客户端和socket.io服务器之间发送数据的书面资源,它会帮助我很多。 以下是我到目前为止: var needle = require('needle'), WebSocket = require('ws'), BASE_URL = 'url-to-socket-host:5002'; var connectionNo = 0; needle.get('http://' + BASE_URL + '/socket.io/?EIO=3&transport=polling&t=1416506501335-0', function (err, resp) { // parse the sid var resp = JSON.parse(resp.body.toString().substring(5, resp.body.toString().length)); // use the sid to connect using websockets var url = 'ws://' […]

如何使用Sails.js创build一个TCP服务器?

所以我使用Sails.js ,当我运行sails lift它正常服务的网站。 但是,如何创build一个TCP服务器,并在运行sails lift时运行,并不断监听来自客户端的原始TCP消息? 我已经find了Node.js这个简单的TCP服务器例子(这显然会适用于Sails): var net = require('net'); var server = net.createServer(function(socket) { socket.write('Echo server\r\n'); socket.pipe(socket); }); server.listen(1337, '127.0.0.1'); 我怎样才能把它融入Sails? 我是否需要修改app.js文件(这是我认为运行sails lift进入时运行)? 有任何想法吗?