Articles of socket.io

如何避免在html页面刷新后在socket.io中创build一个新的套接字连接?

我曾尝试过socket.io,我发现当客户端的html页面加载时,一个新的套接字连接创build。当我刷新页面时,发现一个新的套接字连接create,然后旧的连接断开。 我的问题是如何避免这一点? 因为我正在构build聊天室应用程序。 当用户进入房间页面时,在“连接”服务器端发出“欢迎用户xxx来了!”,并在“断开”事件发出“用户xxx离开”。 但是当用户刷新当前页面时,这将会触发“断开”事件并再次填充“连接”事件。 它会发出“欢迎用户xxx来!” 和“用户xxx离开”。 消息一起。 如何忽略页面刷新事件?就像HTTP会话? 更新 :我已经find了解决问题的方法。 从这个问题处理浏览器重新加载socket.io

断开客户端的socket.id?

是否有可能得到断开客户端的socket.id ? 下面的代码给了我undefined的socket.id Node.js代码 io.sockets.on('connection', function() { socket.on('disconnect', function(socket) { console.log(socket.id); }); });

如何在同一个端口上使用ExpressJS和Socket.io?

在ExpressJS的第三个版本中, express.createServer()更改为express(),这一更改使得难以在同一个端口上绑定socket.io。 也许有人可以find强有力的决定。 现在,这不起作用: var express = require('express') , app = express.createServer() , io = require('socket.io').listen(app); 我目前的工作stream程: https : //gist.github.com/3596852

使用特定的path和命名空间连接到Socket.IO服务器

我的Node.js应用程序运行在URL http://www.example.com/myapp/ 。 我已经configuration了一个Socket.IO服务器(版本1.3.5)与一个自定义命名空间。 以下是一个示例代码片段: var server = http.createServer(…); var io = socketio(server); io .of('/a/b/c') .on('connection', function (socket) { socket.emit('update', {msg: '/a/b/c'}); }); 我无法弄清楚如何从客户端连接到这个服务。 我的猜测(这些都没有工作): io.connect('http://www.example.com/myapp/a/b/c'); io.connect('http://www.example.com', {path: '/myapp/a/b/c'}); io.connect('', {path: '/myapp/a/b/c'}); io.connect('http://www.example.com/a/b/c', {path: '/myapp'}); io.connect('http://www.example.com', {path: '/myapp/socket.io/a/b/c'});

Socket.io – 客户端断开后手动重新连接

我使用node.js和socket.io创build实时Web应用程序。 我将给用户完全控制套接字连接,如手动断开和(重新)连接。 function socket_connect() { console.log('func socket_connect'); socket = io.connect('http://url/to/the/app'); } function socket_reconnect() { console.log('func socket_reconnect'); socket_connect(); } function socket_disconnect () { console.log('func socket_disconnect'); if (socket) socket.disconnect(); } 在客户端启动socket_connect()函数工作正常,但使用socket.disconnect() ,没有新的连接启动。

是否可以将React Native与socket.io结合使用

我正在开发一个Phonegap + React.js和Socket.io的应用程序。 然而,那么React-Native就被释放了,原生的感觉是惊人的。 我试图让socket.io客户端与React Native工作,但不幸的是没有太多的成功。 我做了一些研究,并得到了与本问题中所述完全相同的错误: https : //github.com/facebook/react-native/issues/375 关于这个问题的评论说,尝试使用获取API来获取JS模块,但我认为我做错了: var socketScript; fetch('https://cdn.socket.io/socket.io-1.2.0.js') .then(function(response) { socketScript = response._bodyText; }).done(function() { var socket = socketScript.io(); }); 这返回一个undefined不是一个函数 。 有什么办法让socket.io-client与React Native一起工作吗? 还是我看着这个错误的方式? 也许还有其他更合适的解决scheme?

使用共享会话数据的socket.io身份validation,io.use()如何工作

受到如何与Socket.IO 1.x和Express 4.x共享会话的启发? 我以某种“干净”的方式实现了套接字authentication,不需要使用cookieparsing器,也不需要从头文件中读取cookie,但是对于我来说很less有东西不清楚。 示例使用上一个稳定的socket.io版本1.3.6。 var express = require('express'), session = require('express-session'), RedisStore = require('connect-redis')(session), sessionStore = new RedisStore(), io = require('socket.io').listen(server); var sessionMiddleware = session({ store : sessionStore, secret : "blabla", cookie : { … } }); function socketAuthentication(socket, next) { var sessionID = socket.request.sessionID; sessionStore.get(sessionID, function(err, session) { if(err) { return next(err); } […]

如何区分socket.io聊天中的Symfony用户angular色/组

我一直在玩socket.io的聊天,我有一个问题:如何区分pipe理员用户和聊天室中的普通用户? 我希望pipe理员拥有踢人和禁止的权力,但我的用户不能。 我正在使用Symfony来开发我的应用程序,我想用聊天用户的用户数据库。 我为我的Symfony应用程序的用户使用FOSUserBundle 。 他们分成多个组,所以我有admin组和其他人。 admin组具有ROLE_ADMIN ,这意味着其中的每个用户都具有该angular色。 这是pipe理员组,并且该组中的每个用户都应该有权禁止,踢,静音等聊天室中的其他用户。 为了在聊天中使用我的Symfony用户,我一直在阅读Redis以获得他们的会话,但是我不确定如何区分我的pipe理员用户和普通用户。 我怎样才能防止普通用户向服务器发出一个用户无法访问的请求? 因为任何人都可以提出请求,但是如果他们来自存储在Apache服务器上的MySQL数据库中的用户, 我怎么能validation这些请求呢? 如果不是Symfony,那么这可以在一个普通的PHP应用程序中完成? 最后,pipe理员如何定义并不重要,而是如何将他连接到节点服务器以及如何使节点服务器与我的用户数据库一起工作。 我有一个简单的encryption和发送用户的数据到节点服务器,然后在那里解密的想法。 只有两台服务器知道私钥,所以即使客户端掌握了encryption的数据,也不能向另一个客户端发出请求。 我可能会做一些IP检查和时间戳。 然后可以使用节点服务器上的解密数据来说明用户是否是pipe理员,并允许他发送某些请求。 这是一个好主意还是有更好的办法?

如何通过带有node.js和socket.io的WebSocketsstream式传输MP3数据?

我有问题通过WebSocket与node.js和socket.iostreamMP3数据。 一切似乎工作,但decodeAudioData不公平对我来说。 这是我的玩具服务器: var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') app.listen(8081); function handler (req, res) { res.writeHead(200, { 'Content-Type': 'text/html', }); res.end('Hello, world!'); } io.configure('development', function() { io.set('log level', 1); io.set('transports', [ 'websocket' ]); }); io.sockets.on('connection', function (socket) { console.log('connection established'); var readStream = fs.createReadStream("test.mp3", {'flags': 'r', 'encoding': 'binary', 'mode': […]

无法在Windows 7上安装socket.io

我是Node和NPM的新手。 我使用Node v0.10.0,当我运行npm install socket.io命令时,出现以下错误: C:\Users\USER\AppData\Roaming\npm\node_modules\socket.io\node_modules\socket.io- client\node_modules\ws>node "C:\Users\USER\AppData\Roaming\npm\node_modules\npm\ bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(29 7,5): warning MSB8003: Could not find WindowsSDKDir variable from the registry. TargetFrameworkVersion or PlatformToolset may be set to an invalid version nu mber. [C:\Users\USER\AppData\Roaming\npm\node_modules\socket.io\node_modules\so cket.io-client\node_modules\ws\build\bufferutil.vcxproj] bufferutil.cc c:\users\user\.node-gyp\0.10.0\deps\uv\include\uv-private/uv-win.h(32): fatal e rror C1083: Cannot open include file: 'winsock2.h': No such file or directory [ […]