とりあえず動いてはいるのですが、URLで受け取ったデータをsocket-ioにて配信する際、一度、自分自身のsocket-ioにconnectしてsocketにセットしています。
connectが非同期となる為setTimeoutを利用している為、サーバの負荷次第ではconnect処理(serversocket1)を配信処理(serversocket2)が追い越してしまうと考えています。
-------------------------------------------------------------------------------------------
var http = require("http");
var url = require("url");
var socketval = 0;
function start(route,handle){
var query = "";
function onRequest(request,response){
var queryData = url.parse(request.url, true).query;
var url_parts = url.parse(request.url,true);
query = url.parse(request.url, true).query;
var pathname = url.parse(request.url).pathname;
if(socketval===0){
setTimeout(function(){serversocket1("Appname",query)},1);
};
setTimeout(function(){serversocket2("Appname",query)},1000);
request.setEncoding("utf8");
request.addListener("end",function(){
route(handle,pathname,response);
});
}
var server = http.createServer(onRequest).listen(8080);
//console.log("Serevr has sterted.");
var io = require('
socket.io').listen(server);
var archiveMessages = {};
var channels = ['Appname'];
var appname = io.of('/appname');
var socket = "";
var socket_c = "";
appname.on('connection', function(socketin){
socket = socketin;
// push available channel list
socket.emit('available_channel', channels);
socket.on('join', function(value){
console.log('%s joined channel: %s',
socket.id, value.channelId);
socket.join(value.channelId);
});
socket.on('join_c', function(value){
console.log('clientjoin %s joined channel: %s',
socket.id, value.channelId);
socket.join(value.channelId);
socket_c = socket;
socketval=1;
});
socket.on('post', function(message){
socket.get('channel_id', function(err, channelId){
console.log(' %s says<%s channel>: %s',
socket.id, channelId, message);
});
});
socket.on('disconnect', function(){
socket.get('channel_id', function(channelId){
socket.leave(channelId);
});
});
});
var appname_c = "";
function serversocket1(channelId,data){
var appname_c_1 = io_c.connect('http://localhost:8080');
appname_c = appname_c_1.of('/appname');
appname_c.emit('join_c', {
channelId: 'Appname'
});
}
function serversocket2(channelId,data){
socket_c.set('channel_id', channelId, function(){
socket_c.emit('posted', data);
});
}
};
exports.start = start;
------------------------------------------------------------------------------------------------