Tag: socket.io

使用Socket.io模块与XMPP的Node.js – 优点和缺点

我有一个Node.js与Socket.io聊天应用程序和一个XMPP Openfire聊天系统。 我期待用Node.js和Socket.io取代XMPP。 然而,有人说,Node.js与Socket.io会有问题,如果服务器崩溃,并返回在线将有一个瓶颈综合症或者可能无法重新连接10,000个在线用户。 真的吗? 另一个问题。 在什么情况下,XMPP比Socket.io更适合,反之亦然?

dynamic命名空间Socket.IO

我如何在socket.io中使用dynamic命名空间。 我正在寻找(贫穷的) 文档 ,它说,命名空间必须像这样使用: io.of('/news') io.of('/akfda') 要使用命名空间,请执行io.of("/namespace") 。 我需要注册服务器中的每一个命名空间吗? 也许我想要一个dynamic内容的命名空间。 我怎么能做这样的事情: io.of('/:somethign/:id')

格式化消息从python客户端发送到socket.io node.js服务器

我试图通过发送一个自定义的事件到服务器,使用Socket.io 0.7来获取Python客户端与Node.js服务器交谈。 基于我在GitHub上find的Socket.io引用,以及下面的WebSocket Python库 。 这是我的代码到目前为止: 节点服务器 io.sockets.on('connection', function (socket) { socket.on('newimg', function(data) { console.log(data); }); }); Python客户端 def handshake(host, port): u = urlopen("http://%s:%d/socket.io/1/" % (host, port)) if u.getcode() == 200: response = u.readline() (sid, hbtimeout, ctimeout, supported) = response.split(":") supportedlist = supported.split(",") if "websocket" in supportedlist: return (sid, hbtimeout, ctimeout) else: raise TransportException() else: […]

Nodejs&Socket.io可以支持多less用户?

我有一个实现了broadcast.emit的网站。 向该网站的所有用户发送消息。 这只是socket.io的最简单的实现,但我目前有一个问题。 当我打了大约100个并发用户。 nodejs服务器开始滞后,直到它挂起,我不能再访问我的整个网站。 当我们检查服务器。 nodejs占用CPU的100%。 这是正常的吗? 我想知道有多less用户可以socket.io支持? 而当这件事情发生有一种方式来重新启动nodejs服务器编程?

node.js socket.io如何发送到特定的客户端?

我想“发射”一个消息到一个特定的客户端,这个客户端是根据另一个客户端接收到的另一个消息来select的,我该怎么做? 我想把每个客户join自己的“房间”然后播放。 有没有更好的办法?

Socket.io自定义客户端ID

我正在使用socket.io创build一个聊天应用程序,我想使用自定义的客户端ID,而不是默认的( 1120516437992682114 )。 连接时是否有任何方式发送自定义标识符,或只是使用某些东西来跟踪每个ID的自定义名称? 谢谢!

垂直和水平地缩放Socket.io – 什么是“正确的”方式?

我想纵向和横向扩展我的Node.js套接字应用程序,我还没有find一个复杂的解决scheme。 我的应用程序有两个用例: 将消息从一个用户广播到所有其他用户 将消息从一个用户推送到一部分用户 一方面,我已经读过,我需要Redis和socket.io-redis 另一方面,我观看了这个video ,看到这个回答说Redis不可靠,并且不能保证发布的消息到达 ,所以你只能用它来进行聚类/垂直缩放 使用ServiceBus的 Microsoft Azure解决scheme是没有问题的,因为我不想使用Azure。 这个人不是Redis,而是推荐使用RabbitMQ进行水平缩放。 对于垂直缩放,还有一个用于节点进程的IPC,即socket.io- clusterhub ,但它似乎只能在Socket.io <= v0.9.0 然后有这个人 ,他已经实现了自己的方法通过HTTP请求传递消息到其他节点,这是有道理的。 但为什么HTTP请求,如果你也可以build立服务器之间的直接套接字连接,同时推送消息到所有的服务器,克服从一个服务器到另一个延迟? 作为一个结论,我想也许我可以在每个服务器上使用Redis ,只是为了在多个进程中集中我的应用程序时交换消息,以及RabbitMQ作为S2S通信解决scheme。 但是有一个Redis per Server和另外一个RabbitMQ似乎有些过火了。 是否有任何已知的更短/更好的解决scheme来双向可靠地扩展Socket.io? 编辑:我已经尝试使用单个Redis服务器多个Node.js服务器,其中每个服务器通过所有核心上的粘滞会话使用群集。 虽然群集在自己的作品像redis的魅力,使用多个服务器似乎有问题。 消息不会到达其他节点 。

如何将socket.io与webpack-hot-middleware一起使用?

我有一个使用webpack-dev-middleware的Koa服务器和使用热模块replace(HMR)的webpack-hot-middleware,所以中间件使用一个websocket将更改推送到客户端。 但是我的应用程序代码在客户端和Koa服务器之间也需要自己的websocket连接。 我不知道如何实现? 看起来好像两个是相冲突的。 我可以并排吗? 我的服务器代码看起来像这样 const compiler = webpack(webpackConfig) const app = new Koa() app.use(webpackDevMiddleware(compiler, { quiet: true, noInfo: true stats: { colors: true, reasons: true } }))) app.use(webpackHotMiddleware(compiler)) const server = require('http').createServer(app.callback()) const io = require('socket.io')(server) io.on('connection', function() { console.log('socket connection!!') }) 和我的客户端一样 import Client from 'socket.io-client' const io = Client() io.on('connection', (socket) […]

Node.js应用程序在本地工作,但Heroku说缺less模块

我使用Node.JS和Socket.IO创build了一个简单的聊天应用程序,本地一切正常,但是当我将它推送到heroku时,它给我一个应用程序错误,当我检查日志时,这是错误: Error: Cannot find module 'indexof' at Function.Module._resolveFilename <module.js:338:15> at Function.Module._load <module.js:280:25> at Module.require <module.js:364:17> at require <module.js:380:17> at Object.<anonymous> </app/node_modules/socket.io/node_modules/socket.io-parser/node_modules/emitter/index.js:6:13> at Module._compile <module.js:456:26> at Object.Module._extensions..js <module.js:474:10> at Module.load <module.js:356:32> at Functin.Module._load <module.js:312:12> at Module.require <module.js:364:17> 所以我发现indexof是一个Socket.IO使用的模块,它位于我的node_modules文件夹中,但是由于某种原因,它不会被推送到heroku,或者只是不被识别。 我重新安装我的模块5-6次,重新创build应用程序,但它仍然给我同样的错误。 我的package.json文件有3个依赖项:Express,Socket.IO和Jade

如何在socket.io中configuration重新连接?

我用下面的代码创buildsocket.io连接 var socket = new io.connect('http://localhost:8181', { 'reconnect': true, 'reconnection delay': 500, 'max reconnection attempts': 50 }); 但是当我杀死服务器CTRL + C并重新启动时,重新连接不会发生。 但在客户端引发断开事件。 这可能是什么原因?