Articles of 套接字

简单地发射的一个套接字和一个易于发射的套接字之间有什么区别?

这是对以下问题的后续问题; 为什么updateSockets()函数接受一个像这样的参数? 在下面的代码中,套接字使用volatile来发射。 var updateSockets = function(data) { // adding the time of the last update data.time = new Date(); console.log('Pushing new data to the clients connected ( connections amount = %s ) – %s', connectionsArray.length , data.time); // sending new data to all the sockets connected connectionsArray.forEach(function(tmpSocket) { tmpSocket.volatile.emit('notification', data); }); }; 如果代码被更改成tmpSocket.emit('notification', data); […]

如何创build一个可重用的Socket.IO模块

我有创build一个暴露我的Socket.IO库function的模块的麻烦: const sio = require('socket.io'); module.exports = function(server) { const io = sio(server); return { register: function(namespace) { let nsp = io.of(namespace); nsp.on('connect', function(socket) { // … } } } } 现在的问题是如何在其他模块中使用这个? 在我的app.js 我使用Express创buildserver ,并可以使用require('./mysocketio')(server)实例化模块,但不能在其他模块中使用,因为服务器在那里不可用。 什么是解决这些循环依赖的好方法?

在ec2实例上使用socket.io获得“websocket连接无效”错误?

我有这个networking应用程序与express和socket.io使用node.js编写,该应用程序在本地主机上运行良好,但是当我推到我的ec2服务器,它连接像20秒,然后断开连接,然后再次连接等… 给我在节点控制台上的错误 warn – websocket connection invalid info – transport end 服务器 app = express() server = http.createServer(app) io = require('socket.io').listen(server) 客户 socket = io.connect() 我知道问题不在我的代码中,因为我完全testing了本地主机上的Web应用程序,所以唯一的问题是这个代码在哪里运行,这是我的EC2实例?

节点jsnetworking套接字+ websocket没有socket.io

我想用node.js创build类似char的东西我是nodejs的新手,我想创build它没有socket.io(我想了解它是如何工作的)。 这是我使用的代码。 var http = require('http'); var net = require('net'); var server = http.createServer(function(req,res){ res.writeHead(200,{'content-type' : 'text/html'}); res.write('<a href="./lol/">lol</a><br>'); res.end('hello world: '+req.url); var client = new net.Socket(); client.connect('7001', '127.0.0.1', function() { console.log('CONNECTED TO: '); // Write a message to the socket as soon as the client is connected, the server will receive it as message […]

Socket.IO与扭曲

我的想法是为iOS和Android构build一个简单的聊天应用程序。 无论如何,我的问题与服务器端有关。 根据我所读的,做聊天应用程序的最佳select是构build套接字。 提到数据库,我的意图是使用MySQL,为了select其中一种可能性,这也可能是重要的。 我的问题是, 就可伸缩性,速度和安全性而言,这是最好的select:使用Twisted或使用Socket.IO的NodeJS构buildPython套接字? 我想可能还有其他的可能性来构build一个高效的套接字,但现在我正在考虑这两个。 如果你能给我一些build议,我真的很感激。

PHP,nodeJS和会话

我有一个经典的Apache服务器提供的PHP文件,和一个nodeJS服务器(与socket.io,但没有快速/连接)用于实时事件pipe理该PHP网站。 我有时需要authentication连接到nodeJS服务器的客户端,但是当用户重新加载页面时,这个authentication会丢失,因为它也重新加载了socket.io客户端(我在服务器上存储了套接字ID,每次刷新都会丢失) 问题是:有没有办法保持连接在socket.io,或链接的Apache PHP会话和nodeJS服务器的方式? 或者也许一种方法来保持使用cookie的身份validation(知道我必须存储敏感数据,如用户密码和密钥)?

在套接字io中事件的callback函数中获取事件名称

我正在build立一个中介节点服务器作为套接字客户端和服务器,我想听后端服务器事件,然后处理后,将事件转发到客户端(浏览器)。 var socket = require('socket.io'), client = require('socket.io-client'); socket.on('event_name', function(data) { /* Logic to process response and relay to client */ client.emit(this.event, data); // How can I get name of the outer event? }); 我想获得callback中的event_name值。 我能怎么做?

在Socket.io中进行身份validation

我将尝试在socket.io上validation连接。 目前,用户首先通过REST API进行身份validation,然后向用户发送带有经过身份validation的用户名的JsonWebToken 。 当我打开客户端和服务器之间的连接后,我的计划是暂时从连接的套接字列表中删除这个套接字,以防止服务器之间的数据接收和发送,而我执行身份validation。 在这个validation中,我validation令牌,如果令牌是有效的,我重新添加套接字的id到连接的套接字列表。 唯一的问题是第一部分不起作用。 我似乎无法从列表中删除套接字。 为了testing这个我做了以下。 io.on('connection', function(socket){ //temp delete socket delete io.sockets.connected[socket.id]; console.log(io.sockets.connected); socket.emit("test"); }); 正如你所看到的,我删除了套接字,并发出一个testing事件来查看套接字是否仍然打开。 客户收到的消息不应该是。 有谁知道这是为什么发生?

socket.get()和socket.set()给出了问题

我正在使用NodeJs v0.10.28,每次我尝试login聊天,我得到一个错误 TypeError: Object #<Socket> has no method 'set' at Socket.<anonymous> 如果我删除线的作品,但不正确的工作。 这段代码中的错误是什么? // get the name of the sender socket.get('nickname', function (err, name) { console.log('Chat message by ', name); console.log('error ', err); sender = name; }); 和 socket.set('nickname', name, function () { // this kind of emit will send to all! 😀 io.sockets.emit('chat', { […]

nodejs:错误:EADDRNOTAVAIL,无法分配请求的地址

我有以下运行在172.16.1.218上的node.js服务器: var net=require('net'); var server = net.createServer(function (socket) { socket.write("Echo server\r\n"); socket.pipe(socket); }); server.listen(6001, "172.16.1.218"); 我可以telnet到它,它如预期的那样回声。 我有以下运行在172.16.1.224上的node.js服务器: var net = require('net'); var server = net.createServer(function (socket) { // Every time someone connects, tell them hello and then close the connection. socket.addListener("connect", function () { sys.puts("Connection from " + socket.remoteAddress); socket.end("Hello World\n"); }); }); // Fire […]