Tag: 套接字

使用R连接到socket.io套接字

我正尝试使用R函数socketConnection()连接到R中的socket.io套接字。 但是,虽然我能够正确设置套接字,但是我无法从中读取数据到R中。 我用来设置服务器的JavaScript代码是: var app = require('http').createServer(handler) var io = require('socket.io')(app); var fs = require('fs'); app.listen(8005); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.on('connection', function (socket) { setInterval(function() { socket.emit('update', "test") }, 1000); }); index.html的代码是: <script src="/socket.io/socket.io.js"></script> […]

socket.io 1.0.0 ^:使用默认的房间与自定义房间进行用户特定的通信

socket.io 1.4.5,node.js 5.x 前进:在这篇文章之前有很多阅读,努力和失败 – 所以我希望它能帮助很多未来的读者。 当我考虑如何使用房间进行用户特定的通信时(使用直接信息),使用默认房间的选项使我感到困惑, 因为直觉上,这看起来就像一个开箱即用的解决scheme,可能不应该像使用这种stream行的解决scheme一样,使用他们的用户ID或电子邮件为每个用户创build一个自定义房间。 而且,由于它是自动创build的,我认为它应该是我的唯一唯一的独立侦听器。 这导致我的尽职调查来创build这个解决scheme: io.on('connection', function(socket){ var curretUserID = null socket.on('set user',function(user){ userID = curretUserID.id }); io.to(socket.id).emit('welcome','welcome to the room!) socket.on('chat message', function(msg){//Makes Sense io.emit('chat message', msg); }); socket.on('private message', function(id, msgData){ if(userID === msg.recipientID){ socket.to(id).emit('private message', 'for your eyes only'); } }); }); 我将userID设置为在父作用域connection内部生存,以避免需要在用户和套接字之间创build映射,因为据推测这应该是使用房间解决scheme的优势。 现在我还没有看到有人这样做,所以我不知道是否完全按照默认房间的方向进行,或者由于某些原因,这样做不能扩展或在野外工作。 题: 这是默认房间的预期用途之一,还是创build一个自定义房间(如上面提到的stream行答案)仍然是当前处理用户特定通信的方式?

如何使用path创build套接字连接

在文档中,有一个通过path创build套接字的函数, 它是socket.connect(path[, connectListener]) 链接 我试过这个: var net = require('net'), fs = require('fs'), path = require('path'), sock, os = require('os'); const TEMP_DIR = os.tmpDir(); const TEMP_FILE = path.join(TEMP_DIR, 'my.sock'); console.log(TEMP_FILE) fs.open(TEMP_FILE, 'w+', function(err, fdesc){ if (err || !fdesc) { throw 'Error: ' + (err || 'No fdesc'); } sock = new net.Socket({ fd : fdesc, allowHalfOpen: […]

如何发出和接收使用socketio-jwt进行身份validation

当客户端有令牌(由Laravel提供的jwt)时,我的套接字工作正常,但是,当客户端尚未validation时需要与客户端一起工作,我想要的东西是: io.sockets .on('connection', socketioJwt.authorize({ secret: process.env.JWT_SECRET, timeout: 15000 // 15 seconds to send the authentication message })) .on('authenticated', function(socket) { console.log('Authenticated!!'); // This works: socket.on('setDataRegistered', function(datos) { console.log('Registering!'); }); }) // This doesn't works: .on('config', function(socket) { console.log('A client wants to be configured before authenticated!'); }) 在validation之前,我怎样才能从FrontEnd调用'config'(socket.emit('config'))? 谢谢你的帮助。 对不起我的英文。

如何获得在Nodejs应用程序上使用socket.io的性能基准testing

我最近一直在研究一个nodejs应用程序,它为所有的通信使用开放的套接字连接。 该索引是通过nginx提供的。 我想基准服务器处理大量负载的能力,这意味着我最终将testing我的应用程序pipe理开放套接字的能力,而不是它提供索引文件的能力。 有谁知道一个可靠的方法来做到这一点?

使用Web套接字的基于XMPP的聊天服务体系结构

假设我想创build一个基于Web和Web的基于套接字的聊天服务。 而且我们还要说,我想要多个离散的聊天室。 我需要这个扩展,所以,我想使用XMPP,以便我可以透明地使用多个服务器。 图中显示的架构是我需要的吗? 而且,我甚至需要NodeJS?

如何在NodeJS中testingsocket.setKeepAlive

我试图在NodeJS中testingsetKeepAlive()的function。 我在同一本地networking中的不同机器上运行Server.js和client.js。 然后,我closures了客户机上的无线连接(打破了互联网连接)。 15分钟后,仍然没有消息。 这是为什么? 没有设置KeepAlive()的工作? 这里是服务器和客户端的代码: Client.js var net = require('net'); var HOST = '192.168.0.16'; var PORT = 8333; var client = net.connect(PORT, HOST, function connected(){ console.log('connected'); }); client.setKeepAlive(true, 1); client.write('hi server'); client.on('data', function(data) { console.log('Received' + data); }); client.on('close', function(){ console.error('connection closed'); )}; client.on('error', function(err){ console.error('error', err); }); Server.js var net = require('net'); […]

浏览器刷新后,Socket.io会发出重复的数据

我有一个有一个button的页面。 点击button时,它通过socket.io获取数据。 但是,每次我重新加载页面时,socket.io都会从以前的数据集中发回一个额外的数据副本。 所以我的数据看起来第一次页面加载(例如:abcd)。 然后重新加载页面将返回2n数据(abcdabcd),再次刷新页面我得到3n数据(abcdabcdabcd)等 如何避免在重新加载页面时将重复的数据发送回客户端? 这是我的代码。 服务器端: app.get('/test', function(req, res){ // some code… io.sockets.on("connection", function(socket){ var socketFn = function(data){ socket.emit("trends", { trends: JSON.parse(redisData) }); }; socket.on("action", socketFn); socket.on("disconnect", function(){ socket.removeListener("action", socketFn); // this doesn't work }); }); res.render('test'); }); 客户端: var socketOpts = { "sync disconnect on unload" : true }; var socket = […]

如何创build一个实时audiostream队列?

所以我正在考虑创build一个节点应用程序,在这个应用程序中,用户可以将歌曲添加到“队列”,并将歌曲实时播放给所有用户,但环顾四周后,我不太清楚如何完成此操作。 我读的主要文章是这个: http : //pedromtavares.wordpress.com/2012/12/28/streaming-audio-on-the-web-with-nodejs/ 看起来icecast服务器可以很好地工作,但是有没有一种方法可以让节点将歌曲推送到由icecast服务器播放的队列中? 到目前为止,从我读过的东西看来,pipe理歌曲的唯一方法是指定播放列表或手动添加歌曲,并且在队列中没有歌曲时告诉服务器不播放任何内容,这似乎也是一个潜在的问题。

Web Socket:无法检测到互联网断开连接的客户端连接

如果客户端使用Web套接字closures互联网,我想检测客户端连接。 我的代码是: //Include util library var util = require('util'); // Include underscore library var _ = require('underscore')._; //For websocket var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}), webSockets = {} // userID: webSocket // CONNECT /:userID // wscat -c ws://localhost:5000/1 webSocketServer.on('connection', function (webSocket) { var userID = webSocket.upgradeReq.url.substr(1); //console.log('User_id is ',userID); webSockets[userID] = webSocket util.log('User_id: […]