![]() |
Можно ли сделать на Flash'е socket listener?
Чтоб при загрузке открывал локальный порт, слушал его всё время и по получении данных выполнял JS функцию.
Чё-то не получается... :-( Заранее спс. P.S. А нужны ли будут политики для локального порта? |
Нет. Флэш - клиентская платформа, не серверная.
|
Так на клиенте ж! Никуда ходить не надо - сиди, слушай... А сервер тебе пошлет...
Что, совсем-совсем никак? :-( А как чаты делают? Они что, по таймеру на сервер за новыми сообщениями ходят? |
Ты ж сам себя "завалил" -
Цитата:
|
Не делает connect с закрытым портом. А как его открыть? У меня на C# нормально listener написан - открывает, сидит, слушает, получает...
А как так сделать на Flash? Там есть только connect, а он для закрытого порта не проходит... Обясните, плз, не-Flash программеру! Потому как на C# это две разные логики - "послать и закрыть" (connect/send) или "сидеть и слушать" (bind/listen). А тута тока connect... Не впиливаю я чего-то.... :-( |
Флеш не может слушать порт, только посылать и получать.
|
Мля! Полный конец обеда! :-((((
Т.е. если мне надо real-time реакция клиента на событие на сервере, то фигу? Тока через таймерный запрос (раз в...)? |
Вы понимаете разницу между коннектится и слушать?
Слушать порт - это значит, что все то время, что флеш открыт, на системе, где он открыт все запросы к конкретному порту будут уходить слушателю - флешу. Вы понимаете, что код скачаный из интернета ну никак не может обладать такими свойствами? Флеш может только пытаться коннектится к порту, но никак не перекрывать трафик на этом порту... |
ОК. Пнятно... Спс за разъяснение, а то я чё-то плаваю... :-( Кто к комуконнектится и кто кому должен посылать....
Так что, real-time никак не сделать? Мне надо реакция на серверное событие... Ну, например, как в чате - кто-то залогонился и надо всплывучку всем показать, как в Messenger'e. Мне кроме периодического запроса в голову ничего не приходит... P.S. На самом деле, web-application корпоративная, внутреняя, так что порт может быть специально выделен под это дело на каждом клиенте. И firewall раскрыт, как надо. Можно б было listener реализовать чисто на C#, но вся application на web построена и надо бы енто дело интегрировать как-то в браузер... А как - я чё-то не соображу.... :-( |
Ну... как бы вам это еще сказать:
сокет - это и есть слушатель, т.е. программа, которая запустившись все время опрашивает систему на предмет наличия какой-нибудь информации в порту #... Клиент (Флеш) может послать в этот порт информацию (законнектится), после чего он будет получать сообщения отправленные слушателем и посылать их. |
Спс большое. Вроде немного прояснилось в голове...
Значит все функции по контролю подключенных flash'ей на клиентах и оповещению остальных о новом юзере ложится на серверное приложение. Я правильно впиливаю? Там надо хранить все активные connection'ы и при появлении нового рассылать им сообщение, а уж они там по получении пусть делают, что положено... P.S. А чё делать, если клиент браузер закрыл? Сокет закроется и на сервере будет у listener'а событие disconnect? |
В чём разница между клиентом и сервером? Сервер позволяет клиентам открывать соединение, а клиент может запрашивать соединение с сервером. Т.е. сервер по собственному желанию соединиться с клиентом не может.
Что такое сокетное соединение? Соединение, которое продолжает поддерживаться обеими сторонами при наличии обоюдного на то согласия и отсутствия физических неисправностей между ними. Т.е. при открытом сокете сервер может в любой момент послать клиенту сообщение. Клиент серверу тоже. Т.е. если ты хочешь написать, скажем, инстант мессенджер со флэшовым фронт-эндом, то бишь клиентом, то да, флэшовый клиент может открыть сокетное соединение с неким существующим сервером и теоретически неограниченное время получать из сокета сообщения и события. Ответ на последний вопрос: что произойдёт на сервере если пользователь закроет браузер с клиентом, мы не знаем, это зависит исключительно от сервера. |
Угу, к примеру, простые реализации не распознают статус разрыва - просто проверяют - есть или нет. А более совершенные распознают не только обрыв - ERROR, но еще и подсобытие - CLIENT_DISCONNECT, SESSION_END, IOEXCEPTION, TIMEOUT и т.д., то есть на сервере можно сделать обработку в зависимости от кода разрыва.
|
Спасибо, народ! Супер как прояснилось в голове! :-)
Я думаю, на C# все эти события можно поймать в стандартном Socket-объекте... Короче, я так понимаю, сокет - это такой кальян - одна стойка с дымом и куча трубочек. Кто подключился - может в любой момент получить дозу :-)))) Но без дымилки трубочка бесполезна... :-))))))) P.S. А можно ли использовать уже открытые в системе порты для обмена данными? Например, C#-app посылает на клиентский IP на системный открытый порт (ну, не знаю, для какой-нить ненужной фигни вроде SSL), a flash его получает.... Или опять у меня салат в башке? :-\ |
Цитата:
Oxy_Naum, что у вас за тип проекта на C#? Desktop или WEB где работает ваш листнер? |
У меня корпоративная web-application. Клиенты в браузере должен получать real-time реакцию на события на сервере. Желательно REAL-time, а не "частый запрос по таймеру" типа ajax'а. Вот и думали сделать это или ActiveX'ом или Flash'ем, который будет слушать сокет...
P.S. Foli, а за шо Вы так плакали? За мою тупость про сокеты или за кальян? ;-) |
Цитата:
Цитата:
|
| Часовой пояс GMT +4, время: 12:46. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.