Articles of 套接字

握手后立即发送WebSocket消息

我在node.js中构build了一个WebSocket服务器。 当客户端连接时,我想立即发送消息给它。 但是,当握手完成后我发送它时,Chrome中出现错误: Status line contains embedded null 当我使用setTimeout在握手之后100毫秒发送消息时,它工作,但是当使用这种技术使用10毫秒时,它又不起作用。 它看起来像握手和邮件附加时发送到一起发送时,他们之间的时间间隔很小(虽然我不知道,因为我不知道如何查看原始的WebSocketstream量在Chrome中 – 如果有人不,我会也喜欢听到这个)。 我不希望服务器等待100毫秒,因为它肯定是显而易见的客户端,而且它看起来像一个肮脏的伎俩,而不是一个很好的解决scheme。 如何在握手后立即发送消息?

Etherpad Lite传输整个文件还是只传输差异?

当处理非常大的文档时,它是否基本上压倒了连接,并停止或成功pipe理使用差异?

部署新代码或热交换代码时保持套接字连接?

更新代码时是否可以维护套接字连接,或重新启动进程或热交换代码? 我正在考虑下一代正在处理的分布式服务器应用程序(目前用node.js编写),我希望只要服务器和远程客户端能够保持TCP套接字打开状态networking连接,即使在更新服务器代码或特定实例重新启动或消失时也是如此。 是否有以下可能? 代码重新启动之前,它将存储套接字信息,而远程端保持打开状态。 看来这在C中完全可行 代码重新启动之前,它将套接字信息发送到另一个实例或进程? 在Erlang的情况下,如果一个特定的代码被热交换,那么数据结构和连接是否不受干扰? 在一些元组空间分配套接字。 我对此一无所知,但至less听起来很有趣。 任何参考资料我应该看看? 在我看来,Erlang对于这个系统的未来版本来说是个不错的select,但是除了玩具的例子之外,我还没有使用它。 编辑:在Linux上运行

socket.io使用for循环来添加socket.on方法

承担 socketMethods:{ update:function(data){ this.emit("test", data); console.log("socket.update"); }, test:function(data){ this.emit("test", data); console.log("socket.test"); } } 这下面是可能的,并允许我发出“testing”和“更新”,“testing”和“更新”将被称为 socket.on("test", function(data){ dummy.socketMethods.test.call(socket, data); }); socket.on("update", function(data){ dummy.socketMethods.update.call(socket, data); }); 下面这些是不可能的…如果我发出“testing”或“更新”,每个人都会调用“testing”。 如果我使用FOR循环,所有方法将成为所谓的“最后一个”方法。 那就是:如果我切换更新并testing,那么testing是第一次,并且更新在socketMethods对象中是第二次。 无论我是否要求“testing”或“更新”,都会调用“更新” for(key in dummy.socketMethods){ socket.on(key, function(data){ dummy.socketMethods[key].call(socket, data); }); } var methods = ["test", "update"]; while(methods.length !== 0){ var method = methods.pop(); console.log(method); socket.on(method, function(data){ dummy.socketMethods[method].call(socket, data); }); […]

Node.js TCP套接字会话

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

为什么在Node.js中尝试重新连接我的TCP连接后出现ECONNREFUSED错误?

我正在尝试使用以下命令在Node.js中打开另一个程序的TCP连接: connection = net.connect(18003, function() { }); connection.on('close', function() { console.log('Connection closed'); }); connection.on('error', function() { console.log('Connection error'); setTimeout(function () { connection = net.connect(18003, ipAddress, function() { }); }, 10000); //Try to reconnect }); 如果其他程序没有运行(因此没有监听)连接错误是第一次正确处理,但如果我尝试再次连接(失败)超时后出现以下错误: events.js:68 throw arguments[1]; // Unhandled 'error' event Error: connect ECONNREFUSED 现在有没有人为什么不成功的连接第一次正确处理,但不是第二次? 我想继续尝试连接,而等待另一个程序启动。

nodejs JSON.parse(data_from_TCP_socket)

我在nodejs服务器上使用require('net')的代码,所以它是TCP,客户端是AS3并正确发送数据: var server = net.createServer(function(socket) { socket.setEncoding("utf8"); clients.push(socket); function broadcast(message) { clients.forEach(function (client) { client.write(message); }); } socket.on('data', function(dt){ var rdt = dt; var srdt = rdt.toString(); var ordt = JSON.parse(srdt); console.log(ordt); broadcast(ordt); }); socket.on('end', function(){…}); }) 它不能parsing数据并给出各种错误。 我能理解的是,我从客户端获得“缓冲区”。 但是我需要保持套接字打开,所以循环缓冲区的常见解决scheme将不适用于我。 请帮我解决这个问题。 顺便说一句,客户端串数据,当收到这个数据,因为它发送,parsing它正确。

使用UDP套接字的JavaScript应用程序 – NodeJS和SocketIO

我想开发一个JavaScript应用程序,它应该能够通过UDP套接字与其他第三方应用程序进行通信,并通过本地浏览器窗口呈现一些数据。 据我所知,我应该使用NodeJS的UDP套接字连接,我已经testing了它的示例UDPserver.js的例子,似乎很好。 我现在的问题是如何将从UDP服务器(在本地在NodeJS控制台上运行)接收到的数据传递到我的主应用程序,该应用程序将在浏览器上运行。 我读过,我必须使用Socket.IO来实现这个实时连接。 那么,就像在同一台机器上同时运行一个客户端应用程序和一个服务器应用程序一样? socketIO如何连接这两个部分? 我应该使用WebSockets桥接我的应用程序与NodeJS或某事? | JQUERY JS | | NODE.JS | | C++ | | | [?] | | [UDP SOCKETS] | | |LOCAL WEB APP| <=====> |UDP SERVER| <—————–> |3RD-PARTY APPS| | (local) | | (local) | | (network) | 有人能为我清理一下吗? 这应该是相对容易的事情,但我是新来的..

在AWS EC2上设置简单的服务器/客户端套接字进行通信

我正在设置一个简单的通信套接字,通过命令行将消息从本地计算机(Windows)发送到我的AWS EC2实例。 我已经安装了EC2设置和节点。 我的努力是确定哪个端口/主机用于此通信。 请看下面的内容: server.js(在AWS EC2上运行): var net = require('net'); var HOST = '127.0.0.1'; var PORT = 8080; // Create a server instance, and chain the listen function to it // The function passed to net.createServer() becomes the event handler for the 'connection' event // The sock object the callback function receives UNIQUE for […]

尝试运行socket.io示例时,获取跨源请求阻止错误

在运行下面的socket.io示例时,我在firebug中得到了下面的错误。任何人都可以帮我解决这个问题。 跨源请求被阻止:相同来源策略不允许通过http://localhost/socket.io/?EIO = 3&transport = polling&t = 1447667170745-0读取远程资源。 (原因:缺lessCORS头'Access-Control-Allow-Origin')。 我的app.js: var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(80); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 我的index.html: <script src="/socket.io/socket.io.js"></script> <script> var […]