Показать сообщение отдельно
Старый 11.01.2012, 13:18
smorodin вне форума Посмотреть профиль Отправить личное сообщение для smorodin Найти все сообщения от smorodin
  № 12  
Ответить с цитированием
smorodin

Регистрация: May 2009
Сообщений: 6
Уже много таких тем встречал, поэтому делюсь тем, как я сделал:
1) Допустим, само сокет-приложение на 3003 порту. Отдавать политику безопасности будем, например, по 3002 порту.

2) Во флеше ПЕРЕД созданием сокета пишем:
Security.loadPolicyFile("xmlsocket://YOUR_IP:3002");

3) Создадим небольшой сервачок на ноде, пусть всегда "болтается в фоне". Его задача - отдавать политику безопасности.
Код AS1/AS2:
var net = require('net'),
    sys = require('util');
 
console.log("Secur server started");
 
 
var host = 'YOUR IP';
var port = 3002;
 
var server = net.createServer(function(stream) {
	stream.setEncoding('utf8');
	stream.addListener('data', function(mess) {
		var polic = '<?xml version=\&quot;1.0\&quot;?>';
			polic += '<!DOCTYPE cross-domain-policy SYSTEM \&quot;/xml/dtds/cross-domain-policy.dtd\&quot;>';
			polic += '<cross-domain-policy>';
			polic += '<allow-access-from domain=\&quot;*\&quot; to-ports=\&quot;3003\&quot; />';
			polic += '</cross-domain-policy>\0';
		stream.write(polic);
		console.log('Conn :: policy, ip: '+stream.remoteAddress);
	});
 
});
 
server.listen(port, host);
Флеша будет к этому сервачку подключаться, брать политику, отключаться, и подключаться уже на 3003 порт. Еще одно преимущество данного подхода - нет мусора на определение запроса политики в основном прилолжении.