Articles of socket.io

共享Socket.IO和WS之间的WebSocket连接

为了能够在使用Socket.IO的RPCfunction的同时发送二进制数据,我想我可以在同一台服务器上同时使用Socket.IO和WS模块。 而不是打开完全独立的服务器来build立两个连接,我想知道我是否可以使用相同的HTTP服务器。 是否可以同时使用一个由http.createServer()为Socket.IO和WS创build的服务器? 很明显,我期望从客户端创build一个Socket.IO连接和一个常规的WebSocket连接。 下面的代码在客户端创build协议错误,大概是因为Socket.IO和WS都试图处理连接。 var http = require('http'); var server = http.createServer(app); server.listen(3000); // Socket.IO var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { // … } // ws var WebSocketServer = require('ws').Server var wss = new WebSocketServer({server: server}); wss.on('connection', function (ws) { // … }

Socket.io检测断开连接的原因

我正在使用socket.io,我可以检测断开事件的断开连接的原因? 我可以看到像这样的日志文件 info:传输结束(引导)info:传输结束(closures超时)info:传输结束(错误) 我想得到的原因(启动,closures超时,错误)我会这样使用: socket.on('disconnect', function(){ console.log('User 1 disconnected because '+reason); }); 我能得到原因吗? 编辑:我find了解决办法 socket.on('disconnect', function(reason){ console.log('User 1 disconnected because '+reason); });

将socket.io从0.9.x迁移到1.x,configurationRedisStore出现问题

所以我正在将我的节点应用程序从socket.io 0.9.x迁移到1.x,并且在configurationRedisStore时遇到了问题。 我在使用0.9.x时已经有了这个工作,但我无法弄清楚如何使用1.x工作。 该文档似乎只适用于0.9.x. 以下是他们的文档中的相关部分,我遵循并使用旧版本: var RedisStore = require('socket.io/lib/stores/redis') , redis = require('socket.io/node_modules/redis') , pub = redis.createClient() , sub = redis.createClient() , client = redis.createClient(); io.set('store', new RedisStore({ redisPub : pub , redisSub : sub , redisClient : client })); 从我可以告诉问题似乎是这个部分: var RedisStore = require('socket.io/lib/stores/redis') , redis = require('socket.io/node_modules/redis') 这些文件在socket.io模块中似乎不再存在。 另外,我一直在使用他们的迁移指南作为参考,但没有提到如何configurationRedisStore的具体变化。 任何帮助或想法将不胜感激。 谢谢!

带有websocket的Node.js socket.io

我在Node.js或websocket begginer。 我有问题: 我的HTML代码: <!DOCTYPE html> <html> <head> <title>test</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <script> "use strict"; var gniazdo = new WebSocket('ws://localhost:3000'); gniazdo.onopen = function(){ console.log('Połączono'); }; gniazdo.onmessage = function(m){ console.log(m.data); }; </script> </body> </html> 我的Node.js代码: var io = require('socket.io')(3000); io.on('connection', function(socket){ console.log('a user connected'); }); 我在控制台中有错误: WebSocket connection to 'ws://localhost:3000/' failed: […]

如何在部署之后强制客户端重新加载?

我正在使用MEAN堆栈(mongo,express,angular和node)。 我每隔几天就会比较频繁地进行生产。 我担心的是我有时会更改客户端代码和API,我不想确保API与以前版本的客户端代码的向后兼容性。 在这种情况下,什么是确保所有客户重新加载时最有效的方法? 我已经看到,例如印象笔记有一个popup式的说,请重新加载浏览器的最新版本的Evernote的东西。 我想做类似的事情…我需要沿着socket.io或sock.js的path,还是我错过了简单的东西,有一个更简单的方法来实现这一点?

我可以使用nodejs将麦克风audio从客户端传输到客户端吗?

我正在尝试创build一个实时语音聊天。 一旦客户端正在按住一个button并进行通话,我希望通过套接字将声音发送到nodejs后端,然后我想将这些数据传输到另一个客户端。 这里是发件人的客户端代码: socket.on('connect', function() { var session = { audio: true, video: false }; navigator.getUserMedia(session, function(stream){ var audioInput = context.createMediaStreamSource(stream); var bufferSize = 2048; recorder = context.createScriptProcessor(bufferSize, 1, 1); recorder.onaudioprocess = onAudio; audioInput.connect(recorder); recorder.connect(context.destination); },function(e){ }); function onAudio(e) { if(!broadcast) return; var mic = e.inputBuffer.getChannelData(0); var converted = convertFloat32ToInt16(mic); socket.emit('broadcast', converted); } }); 然后服务器获取这个缓冲区并将其传输到另一个客户端(在本例中是同一个客户端) […]

如何使用socket.io处理节点服务器上的并发文件写入请求

如何使用socket.io处理节点服务器上的并发文件写入请求。 我正在使用这写: fs.writefile('abc.txt','datatobewritten','utf8',function(err){}); 我有一个文件abc.txt,并假设两个用户试图写在这个文件上的同一时间,然后我得到一个错误,所以如何排队多个请求。

我如何通过websocket传递表单数据? (socket.io)

<form name="input" action=""> <input type="text" name="say" /> <input type="submit" value="send" /> </form> 我想发送这种forms的数据通过networking套接字服务器,我使用socket.io。 达到这个目标的最好方法是什么?

Socket.io延迟触发“断开”事件?

我有一个socket.io客户端连接到一个node.js服务器。 如果我在命令行中kill node.js,客户端立即冻结(即通信停止),但是在“disconnect”事件触发之前会有大约20秒的延迟。 这是行为的devise? 是否有configuration选项来减less触发断开连接事件的延迟? 看起来,这种行为在socket.io的相对较新的(最近6个月)更新中改变了。 在socket.io本身内置了重新连接function之前,我使用“disconnect”事件处理程序实现了自己的重新连接逻辑,当时服务器通信暂停时几乎立即触发“disconnect”事件。

将Node.js中的UDP套接字从应用程序传输到HTTP

是否有可能通过NodeJS将来自应用程序的套接字转移到http? 我发送套接字与应用程序(在c + +中)在UDP或TCP(如果不可能在UDP …)到NodeJS。 我从NodeJS的脚本: var server = dgram.createSocket("udp4"); server.on("message", function (content, rinfo) { console.log("socket: " + content + " from " + rinfo.address + ":" + rinfo.port); }); server.on("listening", function () { }); server.bind(7788); 到现在为止,这个function,但如何将我的套接字转移到Socket.io例如? 我想发送套接字到Socket.io(例如)将套接字转移到HTTP。 通过使用像这样的函数,但不更新与socket.iobuild立连接: io.sockets.on('connection', function (socket) { socket.emit(content); }); 谢谢你的帮助。 ++梅特拉。