Сидел я как то вечером, делать было нечего, на улице бегали алкаши а в доме стояла духата.
И тут решил сделать что нить этакое, подучить сокеты, подтянуть JS ну и просто убить время. Лазал по Дапфу, разглядывал движки, и вдруг вспомнил, у меня же двиг ishtwar есть О_О (старый, очень старый) но востанавливать мне было его лень) и так как я не особо часто серфю по инету, упустил резил от X-Ray. Когда я на него наткнулся, радости небыло предела) скачал, распаковал, запускаю иии...... понимаю, моя жопорукасть 99лвл... xampp выдал мне ошибку (мы постоянно с ним не ладим))
Забил, поставил свой любимый denwer, установил модули, запустил, хвала жопарукому! все работает)
Взял минуту подготовки к дикампилу файла... установил и настроил Phaser (Афигенная библа для разработчиков игр, работа со спрайтами, колизии, эффекты, TiledMaps и тд) и сформировал некую структуру проекта.
Ну думал щя как сбацаю карту, потом остальные flash примочки под js перепишу... радостный дикомпилю swf файлик lab_302.swf и вижу кучу AS кода... Блеать, что они в этоу бедную swf`очку только не добавили... куча файлов, много не нужного мусора... ну... херня думаю, нашел главный класс который работает с сокетами, посмотрел, вроде нечего колосального там не используют, обычные сокеты, гоняют туда сюда и все.
Скачал socket.io (библиотека для работы с сокетами) написал некий код:
Запускаю и вижу невиданную хуйню...
Не доступный тип транспорта.... кхм... WAT? я понимаю Flash уже везде выпиливают, это даже и к лучшему... Но Блеать в моем случае это совсем не весело... Раньше socket.io поддерживало данный транспорт, потом типо незаметно начала ставить проверки
Потом посложнее... потом в нескольких местах... потом вообще выпелили
Сколько я не парился с WebSocket, перепробовал все доступные транспорты [websocket, xhr-polling, jsonp-polling, polling] не один не подконектился к ява демону... Запрос отправляют, а обратно хуй, и падают по таймауту... А переписывать яву не хотел, ибо знаний явы не так много)
Хотел уже делать что то вроде моста используя NodeJS или PHP... но тут вспомнил, когда то баловался AS (ActionScript) помню тот замечательный класс ExternalInterface... есть же возможность вызвать функцию JavaScript и получить значение обратно... так почему же не может быть библы для имитации flashsocket ? и отправился я бороздить просторы инета... Перерыл кучу сайтов, библиотек по пальцам пересчитать... и то везде ссылки битые
единственная библа 2008 кода (
Запустил, и увидел:
Тут меня тоже ждал некий мелкий облом, Java кодирует в байт код, flash берет поэтапно каждый байт.... а мой некий эмуль берет одну строчку... но, щя качаю adobe air буду править эмуль)
Надежды на JS карту не даю, но если заброшу, выложу что есть)
все что писал это просто мысли в слух) вдруг кто либо столкнулся с той же херней что и я)
Об оптимизации не думаю, ибо насрать, я для удовольствия копаюсь =D
Тему буду обновлять, по мере поступления гемороя

И тут решил сделать что нить этакое, подучить сокеты, подтянуть JS ну и просто убить время. Лазал по Дапфу, разглядывал движки, и вдруг вспомнил, у меня же двиг ishtwar есть О_О (старый, очень старый) но востанавливать мне было его лень) и так как я не особо часто серфю по инету, упустил резил от X-Ray. Когда я на него наткнулся, радости небыло предела) скачал, распаковал, запускаю иии...... понимаю, моя жопорукасть 99лвл... xampp выдал мне ошибку (мы постоянно с ним не ладим))
Забил, поставил свой любимый denwer, установил модули, запустил, хвала жопарукому! все работает)
Взял минуту подготовки к дикампилу файла... установил и настроил Phaser (Афигенная библа для разработчиков игр, работа со спрайтами, колизии, эффекты, TiledMaps и тд) и сформировал некую структуру проекта.
Ну думал щя как сбацаю карту, потом остальные flash примочки под js перепишу... радостный дикомпилю swf файлик lab_302.swf и вижу кучу AS кода... Блеать, что они в этоу бедную swf`очку только не добавили... куча файлов, много не нужного мусора... ну... херня думаю, нашел главный класс который работает с сокетами, посмотрел, вроде нечего колосального там не используют, обычные сокеты, гоняют туда сюда и все.
Скачал socket.io (библиотека для работы с сокетами) написал некий код:
JavaScript:
var socket = io.connect('127.0.0.1:6125', {transports: ['flashsocket']});
localStorage.debug = '*';
var socket_state;
var response_text = '';
var isConnected = false;
// Если сокет закрыт
socket.on('close', function(ev){
console.log('Close socket' + ev);
isConnected = false;
return;
})
// если сокет подключился
socket.on('connect', function(ev){
console.log('CONECTED '+ev);
isConnected = true;
return;
})
// Если возникли ошибки
socket.on('connect_error', function(ev){
console.log('ioError ' + ev);
socket.close();
isConnected = false;
return;
})
// если возникли ошибки в политике безопасности
socket.on('securityError', function(ev){
console.log('Security error' + ev);
socket.close();
isConnected = false;
return;
})
// Если нет ошибок и сервер ответил, то получаем и обрабатываем данные
socket.on('socketData', function(ev){
console.log(ev)
return;
})
Код:
socket.io.js:1407 socket.io-client:url parse http://127.0.0.1:6125 +7ms
socket.io.js:1407 socket.io-client new io instance for http://127.0.0.1:6125 +0ms
socket.io.js:1407 socket.io-client:manager readyState closed +0ms
socket.io.js:1407 socket.io-client:manager opening http://127.0.0.1:6125 +0ms
socket.io.js:3722 engine.io-client:socket creating transport "flashsocket" +0ms
socket.io.js:1407 socket.io-client:manager connect attempt will timeout after 20000 +4ms
socket.io.js:1407 socket.io-client:manager readyState opening +0ms
socket.io.js:1407 socket.io-client:manager connect_error +105ms
game.js:108 ioError No transports available
socket.io.js:3722 engine.io-client:socket socket close with reason: "forced close" +109ms
Не доступный тип транспорта.... кхм... WAT? я понимаю Flash уже везде выпиливают, это даже и к лучшему... Но Блеать в моем случае это совсем не весело... Раньше socket.io поддерживало данный транспорт, потом типо незаметно начала ставить проверки
JavaScript:
if(!windows.WebSocket) return;
Потом посложнее... потом в нескольких местах... потом вообще выпелили
Сколько я не парился с WebSocket, перепробовал все доступные транспорты [websocket, xhr-polling, jsonp-polling, polling] не один не подконектился к ява демону... Запрос отправляют, а обратно хуй, и падают по таймауту... А переписывать яву не хотел, ибо знаний явы не так много)
Хотел уже делать что то вроде моста используя NodeJS или PHP... но тут вспомнил, когда то баловался AS (ActionScript) помню тот замечательный класс ExternalInterface... есть же возможность вызвать функцию JavaScript и получить значение обратно... так почему же не может быть библы для имитации flashsocket ? и отправился я бороздить просторы инета... Перерыл кучу сайтов, библиотек по пальцам пересчитать... и то везде ссылки битые
Вам необходимо зарегистрироваться для просмотра ссылок
) и то скажем так сырая... ну, хоть исходники есть, експортнул на гит, сгитил, написал некий код:
JavaScript:
function ready()
{
console.log("socket ready");
mySocket.connect("127.0.0.1", 6125);
}
function connect(success,data)
{
if(!success)
{
console.log('Disconect: ' + data);
isConnected = false;
return
}
else
{
console.log('CONECTED: ' + success);
isConnected = true;
}
mySocket.write("<policy-file-request/>");
}
function data(content)
{
console.log('Sending security' + context);
var _loc_2;
response_text = response_text + socket.readUTFBytes(socket.bytesAvailable);
if(socket_state == 'waiting_set_pos')
{
socket_state = 'ready';
}
else if(socket_state == 'waiting_get_objects')
{
if(response_text.indexOf("<end>") != -1)
{
_loc_2 = response_text.substring(1 + 38, response_text.length - 5);
_loc_2 = '<?xml version="1.0" encoding="windows-1251"?>' + _loc_2;
game.ParseXML(_loc_2);
socket_state = 'ready';
setTimeout(GetRoomObjects, 1000);
}
}
return;
}
function close()
{
console.log('Close socket');
isConnected = false;
return;
}
var mySocket = new jSocket(ready,connect,data,close);
mySocket.setup("socket","/map/framework/jsocket/flash/jsocket.advanced.swf");
function onError()
{
}
Код:
socket ready
game.js:24 CONECTED: true
260
game.js:32 Uncaught ReferenceError: context is not defined
Надежды на JS карту не даю, но если заброшу, выложу что есть)
все что писал это просто мысли в слух) вдруг кто либо столкнулся с той же херней что и я)
Об оптимизации не думаю, ибо насрать, я для удовольствия копаюсь =D
Тему буду обновлять, по мере поступления гемороя
Последнее редактирование: