Articles of 套接字

node.js + socket.IO – 套接字不重新连接?

我知道socket.io有一个内置的function,重新连接和一切,但我不认为这是工作 – 正如我从别人看到它也没有为他们工作。 如果用户把他们的计算机hibernate,它会断开连接,然后当他们打开备份时,他们不再连接,所以他们没有任何通知或任何东西,直到他们刷新页面。 也许这只是我做得不对的事情? var io = require('socket.io').listen(8080); var users = {}; ////////////////USER CONNECTED///// console.log("Sever is now running"); io.sockets.on('connection', function (socket) { //Tell the client that they are connected socket.emit('connected'); //Once the users session is recieved socket.on('session', function (session) { //Add users to users variable users[socket.id] = {userID:session, socketID:socket}; //When user disconnects socket.on('disconnect', function […]

Sails.js + socket.io:从服务器发送消息到客户端

我试图build立一个系统与sails.js让服务器广播消息到一组客户端。 基本上: A组中的客户端向服务器发送AJAX请求。 服务器处理请求并通过套接字将消息发送给B组的所有客户端。 B组的客户端通过套接字接收消息并显示。 根据socket.io文档,我应该能够让B组中的客户端join一个“房间”,然后让服务器广播到特定的房间,但在客户端,预先存在的“套接字”不有方法“socket.join('房间')”。 所以,我试着给所有的客户发送一个独特的事件: socket.on("connect", function(){ console.log("Client Connected"); }); socket.on("my_event", function(data){ console.log("my_event received"); }); 这可以通过在服务器端执行“sails.io.sockets.emit(”my_event“,{…})”来正常工作,但是这不是将事件发送到每个客户端吗? 我可以使事件名称是唯一的,就像“my_event_000”带有一个ID来指定组,但是这仍然会不必要地将事件发送到每个客户端。 我应该使用“房间”吗? 如果是的话,怎么样?

节点(套接字)实时audiostream/广播

请问,是否有任何简单的方法通过NODE.js和可能的SOCKET.IO从服务器到客户端(浏览器)stream媒体文件(ogg,mp3,spx ..)? 我必须在服务器端loggingaudioinput,然后能够为许多客户端实时播放。 我已经搞乱了binary.js或socket.iostream,但没有能够得到它的权利。 我试图用speex,vorbis或lame编码audioinput,然后通过FS将它加载到客户端,但是我没有成功。 或者我必须捕获PCM,然后在浏览器中解码? 对此的任何build议,没有任何我发现曾经帮助过我。 非常感谢任何提示,链接和想法。

Node.js:如何刷新套接字?

我想在发送下一个数据块之前刷新套接字: var net = require('net'); net.createServer(function(socket) { socket.on('data', function(data) { console.log(data.toString()); }); }).listen(54358, '127.0.0.1'); var socket = net.createConnection(54358, '127.0.0.1'); socket.setNoDelay(true); socket.write('mentos'); socket.write('cola'); 但是,尽pipe有setNoDelay选项,但是,这不起作用,例如打印“mentoscola”而不是“mentos \ ncola”。 我该如何解决?

socket.IO-objc与AZSocketIO

从其他语言的Socket.IO实现列表中 ,我们可以看到Objective-C有两个替代scheme。 我的问题是关于这两个图书馆的优点和缺点。 socket.IO-objc似乎更完整,并有更好的文档,但我也想知道,如果这些优势足够重要,我的项目select一个或另一个AZSocketIO提供考虑哪些优势。 我真的很感激,如果有人使用其中的一个可以给我一些build议。 谢谢!

socket.io手动添加用户到空间(node.js)

我有一个私人工作的聊天应用程序。我的实现是: 1 – 用户进入另一个用户configuration文件页面并写入消息。 在此之后,我为这个对话创造了一个空间。 socket.join(data.user); 2 – 接收者用户将采取这个消息(只有这个用户),但我不知道我怎么可以join这个接收机用户到这个房间。 所以这是我的问题基本上。 我需要添加“手动”这个接收机用户到我的房间。 这样当我把消息广播到这个房间的时候,消息就会发出这两个用户(一个是匿名的,另一个是注册用户)。 它会提供我的一些代码。 server .on('connection', function(socket) { server.to(socket.id).emit('yourSocketId',{ socketid : socket.id,connectedDate : Date.now }); socket.on('AnonymousMessage', function(data) { if(data.isanon == true) { socket.join(data.user); server.to(data.user).emit('AnonymousBroadcast', { message: data.message, user: data.user, isanon : data.isanon, date : data.date, tabno : data.tabno }); } else { socket.join(****); //– I need […]

NodeJS:什么是处理TCP套接字stream的正确方法? 我应该使用哪个分隔符?

根据我在这里所理解的,“V8有一个世代垃圾收集器,随机移动对象,节点不能得到一个指向原始string数据的指针来写入套接字。 所以我不应该将来自TCPstream的数据存储在string中,特别是如果该string变得比Math.pow(2,16)字节更大。 (希望我到现在为止..) 那么什么是处理来自TCP套接字的所有数据的最佳方式? 到目前为止,我一直试图使用_:_:_作为分隔符,因为我认为它是某种独特的,不会混淆其他的东西。 数据的一个样本将会是something_:_:_maybe a large text_:_:_ maybe tons of lines_:_:_more and more data 这是我试图做的: net = require('net'); var server = net.createServer(function (socket) { socket.on('connect',function() { console.log('someone connected'); buf = new Buffer(Math.pow(2,16)); //new buffer with size 2^16 socket.on('data',function(data) { if (data.toString().search('_:_:_') === -1) { // If there's no separator in the data that […]

如何在sails.js 0.10中接收套接字事件?

我有一个名为Collection.js的模型,它看起来像这样: module.exports = { attributes: { title: { type: 'string', required: true }, description: { type: 'text', required: false }, sessions: { collection: 'session', via: 'collection' } } } 据我所知,这个消息是在创build新模型实例时通过套接字发送的,可以通过模型名称获得。 所以我已经在我的app.coffee文件中进行了app.coffee : socket = io.connect() socket.on 'collection', -> console.log 'hey' 我已经validation了“环境”的作用,因为我得到了socket.on 'connect'. -> console.log 'hey'通知socket.on 'connect'. -> console.log 'hey' socket.on 'connect'. -> console.log 'hey' ,但我没有得到任何模型事件,如创build或破坏logging! […]

socket.io 1.2.1如何在重新连接后解决双重事件

在socket.io的博客中说,在1.2.1版本中 “自述文件修复,以防止在重新连接的示例中的双重事件[@nkzawa]” 我为客户端和服务器下载了1.2.1版本,但是在重新连接之后仍然是两次调用事件。 或者我应该用自述文件做些什么? 我试过这种方式重新连接,它的工作,但我可以用它来生产。 这是不是很方便? socket.disconnect() // remove socket object socket = undefined // connect again socket = io.connect({'forceNew':true}) 正如我所说的是正确的方式,还是有缺点? 更新,添加代码 服务器端代码 socket.on('client_emited', function(data){ socketIO.to('this socket id').emit('server_emitted'); }) 客户端代码 var socket; function connectSocket () { if (!socket) socket = io({'forceNew':true}); else socket.connect(); } socket.on('connect', function(){ console.log('CONNECTED TO SOCKET.IO SERVER. SENDING "client_emited" EVENT'); socket.emit('client_emited'); }); […]

当服务器脱机时,socket.io发射

我正在使用socket.io v1.3.6(nodejs),并尝试使用下面的代码从浏览器发出数据。 客户代码 var socket = io.connect('http://something.com:3300/'); function sendMessage(message) { socket.emit('message', message); } 服务器代码 var io = require('socket.io').listen(3300); io.sockets.on('connection', function (socket) { messageHandler(socket); }); function messageHandler(socket) { socket.on('message', function (data) { console.log('Captured a message : ' + data); }); } 我的套接字服务器http://something.com:3300/最初是closures的,并试图调用几个sendMessage() – (约10个电话) 正如预期在浏览器中,我将得到控制台日志中的握手错误。 我等了5分钟,启动了套接字服务器。 但令人惊讶的是,一旦握手build立,在离线状态下发送的所有消息都将被捕获到服务器中。 我的问题:1)这是离线逻辑作为socket.io或WebSocket规范的一部分? 2)我search了很多离线模式的socket.io问题,并且看到了一些特殊的处理build议来捕获离线消息。 但是如果没有这些特殊的离线检查,这是如何工