Tag: socket.io

无法在openshift上部署nodejs socket io应用程序

我有一个基于nodejs和socket io的简单聊天应用程序。 在当地正常工作。 但是我正在面临将它部署到openshift的问题。 我已经阅读并实现了堆栈溢出几乎所有相关的线程。 还没有进展。 客户端(index.html): <script src="/socket.io/socket.io.js"></script> var socket = io.connect("http://www.abcd.com:8000/"); 其中“abcd”是openshift应用程序的附加域名。 服务器端(index.js): //Express initializes app to be a funciton handler that is to be supplied to the http server later var express = require('express'); var app = express(); // var server = require('http').Server(app); var io = require('socket.io')(server); var mongoose = require('mongoose'); var […]

Socket.io和Redis广播给除发件人以外的所有客户

我在后端使用Laravel来创build一个聊天应用程序。 但是当我使用redis ,我无法使用broadcast.send函数。 现在如何发送消息给除发件人以外的所有客户? 此代码有错误: io.broadcast.send(channel +':'+ message.event,message.data); 这是我所有的服务器代码: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var Redis = require('ioredis'); var redis = new Redis(); redis.subscribe('chat'); redis.on('message', function(channel, message) { console.log('Message Recieved: ' + message); message = JSON.parse(message); // send all client except sender io.broadcast.send(channel + ':' + message.event, message.data); […]

使用Socket.IO通过HTTP / GET发送数据

我完全不熟悉服务器端编程和Node.js. 我想通过SocketIO向客户端发送/接收数据,并阅读官方网站的“Hello World”示例。 问题是客户端只能使用HTTP协议,但我不确定Socket.IO如何与HTTP协同工作。 var app = require('express')(); var http = require('http').Server(app); 这是来自Socket.IO网站的一个代码片断,用来指示使用HTTP。 但客户端不能与服务器交互。 我很困惑这些新的概念,不知道这些东西是如何工作的。 Socket.IO如何工作? 它是否使用HTTP? 还是我做错了什么? 我怎样才能发送/接收一个string? 有没有其他方式与客户端和服务器进行交互? 任何帮助将不胜感激。 <3 编辑: 有一件事我忘了提到,客户端是用C编写的。我应该在C代码中做一些新的事情来接收数据吗?! 我testing了几天前通过HTTP从PHP脚本接收数据的程序。

我想用heroku托pipe一个聊天应用程序(Socketio,Node)。 需要用人群产卵

我正在尝试使用Socketio,使用WEB_CONCURRENCY环境variables,并产生作为OURB行为的英雄。 我们如何确保套接字轮询始终进入一个工作节点? 我们是否需要使用任何粘性会话模块? PS:我已经在heroku中启用会话亲和力。 所以投票并不是所有的dynamic。 但是在同一台testing仪中,对于不同的工作人员,来自同一个客户端的套接字轮询不会发给同一个工作人员。 任何人都有一个示例代码或方法? 我无法在互联网上find任何示例逻辑。 非常感谢。

用socket.io广播?

从数据库结果中提供JSONstring的简单函数使用socket.broadcast()广播到客户端。 我想要做的事情是在价值变化的时候更新客户端。 目前,广播function是使用setTimeout每1秒连续播放。 查看Firebug中的请求日志,有一个连续的GET响应,我不认为这是一件好事。 只是想知道什么是使用套接字的最佳做法? 这些要求是否会杀死一些东西? 一个解决scheme是比较时间戳,或类似的东西停止不必要的发送请求? //server-side function checkData() { client.query('SELECT * FROM data', function selectCb(err, data) { socket.broadcast(processData(data)); setTimeout(checkData, 1000); }); } //client-side socket.on('message', function(data) { $('#container').html(JSON.stringify(JSON.parse(data), null)); }); //sample data [{ "type":"Statistic1", "value":65.2, "timestamp":"2011-04-29T16:22:39.000Z" },{ "type":"Statistic2", "value":18.6, "timestamp":"2011-04-29T16:22:39.000Z" }] 谢谢你的帮助!

连接在node.js中与response.end丢失

我使用node.js有多个客户端。 现在,在我的代码中,我正在监听一个端口,每次客户端连接时,我都想向所有其他客户端发送广播消息。 每当有新的客户连接时,我都会提出一个新的事件,我正在向他发送一个响应。 当我说response.end(),我不能发送任何东西到特定的客户端。 但是,浏览器不断加载并等待响应。 反正有没有使用socket.io? 我知道socket.io有它的用途,但我真的想知道,如果我可以做到这一点没有socket.io。

奇怪的Socket.IO行为:事件“连接”和“断开连接”几乎发生在相同的types

在套接字io服务器上,我有这样的东西: io.sockets.on('connection',function(client) { console.log(client.id + ' connected at '+(new Date()).getTime()); client.on('disconnect',function() { console.log(client.id + ' DISCONNECTED at '+(new Date()).getTime()); }); }); 而我的问题是,这发生了: debug – client authorized info – handshake authorized 15229479751557595508 debug – setting request GET /socket.io/1/websocket/15229479751557595508 debug – set heartbeat interval for client 15229479751557595508 debug – client authorized for debug – websocket writing 1:: […]

Socket.io,Redis Store和IE

我使用Redis,Socket.io,theres 2 nodejs服务器运行diff socket.io客户端。 我通过redis存储与两个socket.io客户端进行通信,这样我就可以随时发送到所有套接字。 它工作。 io.sockets.emit('successful_connection', { success : true }); return; 我的问题是,当即通过ID调用一个特定的套接字,它失败。 io.sockets.socket(socketId).emit('successful_connection', { success : true }); return; 我不知道为什么,它适用于所有其他浏览器。 下面是用于socket.io/redisconfiguration的代码 io.configure(function(){ var RedisStore = require('socket.io').RedisStore, opts = {host: **.***.**.**, port: ****}; io.set('store', new RedisStore({redisPub:opts, redisSub:opts, redisClient:opts})); }); 任何build议将是有益的,现在我的主要思想是“为什么有nodejs / socket.io服务器”。 如果我必须处理这个,是否真的有好处? 谢谢

如何对mysql数据库执行查询在nodejs / socket.io中的客户端请求之后?

我见过的所有例子都是先做查询,然后发送给客户端一些信息。 如果我做了一个查询,然后在函数中使用结果: client.query( ('SELECT * FROM '+TABLES_USERS), function(err, results, fields) { var Users = (results); io.sockets.on('connection', function (socket) { socket.on('event1', function (data) { var requser = Users[data]; socket.emit('event2', requser); }); }); client.end(); }); 但是现在我需要根据客户的请求做一个查询。 我试过这样的事情,但查询不起作用: io.sockets.on('connection', function (socket) { socket.on('event1', function (data) { console.log('query required'); /*works*/ client.query( ('SELECT * FROM '+TABLES_USERS+' WHERE id_user ='+data), function(err, […]

规模SocketIO(NowJS)

我目前正在使用Linode来部署我的应用程序。 我有2个服务器,1个数据库服务器,前面有1个负载均衡器。 我使用Redis作为Database和NowJS来实现聊天室。 一切工作正常使用Pub / Sub。 现在,我想用集群来利用多核服务器。 但是,在应用群集时,我遇到了奇怪的情况。 有时,应用程序工作,有时不是约25%的工作,75%的工作(我跑了4个进程)。 因此,我可以认为集群导致nowJS无法正常工作。 现在,我必须做出决定 1.切换到SocketIO并使用RedisStore(对于SocketIO,我还可以使用pub / sub和RedisStore?还是完全切换到RedisStore) 2.忘记群集,如果需要添加更多的服务器(这是浪费资源,因为没有使用多个核心) P / s:我很抱歉我的英文不好,我不是本地人。