Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Всем привет. Пришла идея создать браузерную игру после просмотра одного фильма. Кратко об игры: - люди заходят в комнату и ставят деньги на игроков; - игроки становятся в круг, им раздаются патроны и пистолеты; - по команде патроны заряжают в барабан пистолета, крутят барабан; - потом звучит команда - "стрелять", люди стреляют; - те кто не выбыл продолжают игру, выбывшие могут делать ставки; так вот, как видно идея не сложна, но возникает вопрос: как синхронизировать игроков перед и после момента "стрелять", ведь в комнату кто-то раньше зайдет кто-то позже, кто-то в одном часовом поясе сидит, кто-то в другом ? п.с. Клиентом (мордой GUI) по сути может быть что угодно, это и сам браузер с HTML и Silverlight/Flash, проблема у всех одна, синхронизация игроков. Взаимодействие Клиента и Сервера предполагает использование WCF WebService, т.е. никаких сокетов. Высказывайтесь господа, нужна ваша помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 20:21 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Синхронизировать ничего не нужно - движок должен крутиться на сервере, а там время одно. Смотрим сюда: 9509403 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 20:33 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, авторWcfTicketing\WcfTicketingService\WcfTicketingService.csproj' cannot be opened. The project type is not supported by this installation. что это за тип проекта ? открываю на рабочем буке где стоит Visual Studio Web Developer 2010 Express ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:06 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Microsoft Visual Studio 2010 (Ultimate) уТКаVisual Studio Web Developer 2010 Express Выбросьте в мусорку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:11 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУMicrosoft Visual Studio 2010 (Ultimate) уТКаVisual Studio Web Developer 2010 Express Выбросьте в мусорку. мне на зарплату еле наскребают 10к рупи в месяц, а ты говоришь выброси... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:15 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКамне на зарплату еле наскребают 10к рупи в месяц, а ты говоришь выброси... Варианты: Прекращаем строить из себя девственницу и качаем с торрентов Создать новый солюшен в Visual Studio Web Developer 2010 Express и скопипастить классы Забить на программирование, заняться земледелием ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:20 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, лежа на диване открывалось в Express версии. запустил. земледелием уже начну на днях заниматься, а проект с игрой просто попробовать хочется. по сабжам из ссылки уже подумалось что речь пойдет о WCF Duplex, но нет, в проекте NetTCP - это пожалуй единственное чего я не глядел. спасибо за наводку ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:30 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКаподумалось что речь пойдет о WCF Duplex, но нет, в проекте NetTCP - это пожалуй единственное чего я не глядел. Да, дуплекс - это как альтернатива. Но, по мне красивее написать свой честный CallbackContract (ITicketCallBack в примере). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:42 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, блин. чего избегали, на то и напоролись. главная причина по которой не хотелось использовать Сокеты - это ограниченное кол-во портов на которых может работать Клиент сначала хотелось на Сильверлайт реализовать. Так вот, посмотрел чего там предлагает WCF NET.TCP - это те же самые сокеты только через wcf-сервисы. есть другое предложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 21:47 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
NetTcpBinding Заметкииспользуемая по умолчанию конфигурация для TCP быстрее при обмене сообщениями между конечными точками, чем конфигурация по умолчанию для привязок HTTP <netTcpBinding> maxConnectionsЦелое число, указывающее максимальное число входящих и исходящих подключений, которые будут созданы/приняты службой. Входящие и исходящие подключения считаются относительно отдельного предела, определенного этим атрибутом. Входящие соединения сверх указанного предела помещаются в очередь и обрабатываются по мере освобождения ресурсов . Исходящие соединения сверх указанного предела помещаются в очередь и обрабатываются по мере освобождения ресурсов . Значение по умолчанию — 10. listenBacklogПоложительное целое число, указывающее максимальное число каналов, ожидающих принятия прослушивателем. Соединения сверх этого лимита помещаются в очередь и обрабатываются по мере освобождения ресурсов. Атрибут connectionTimeout ограничивает время, в течение которого клиент ожидает установления соединения до создания исключения подключения. Значение по умолчанию — 10. Так же читать про буферные пулы. P.S. Какие к чёрту сокеты? Какое ограниченное кол-во портов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 22:02 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Там всё красиво и умное реализовано через пулы и очереди. Программисту не нужно понимать эту рутинную и сложную систему работы NetTcpBinding. Просто берём, конфигурим и работаем. А оно само там пулится и распихивается по очередям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 22:05 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, то что можно конфигурировать пул - это хорошо. я про другое - сам Сильвер ограничен по портам, через которые можно производить коммуникации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 22:15 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКасам Сильвер ограничен по портам, через которые можно производить коммуникации. Ссылка на документацию будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 23:13 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, да вот выдержкаOne additional restriction on using the sockets classes is that the destination port range that a network application is allowed to connect to must be within the range of 4502-4534. These are the only destination ports allowed by a connection from a Silverlight application using sockets. If the target port is not within this port range, the attempt to connect will fail. It is possible for a target server to receive connections on a port from this restricted range and redirect it to a different port (a well-known port, for example) if this is needed to support a specific existing application protocol. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 00:27 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, ок спасибо. Ну так а какие могут быть проблемы использования клиентами одного порта из указанного перечня? Все будут ломиться по одному порту, всё чинно и благородно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:01 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУуТКа, ок спасибо. Ну так а какие могут быть проблемы использования клиентами одного порта из указанного перечня? Все будут ломиться по одному порту, всё чинно и благородно. За одним маленьким "но" - в 90% случаев огнестенки просто пошлют все эти SL в далекое пешее путешествие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:10 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, ну если пул не будет захлебываться и заботиться о нем действительно не нужно, то дай бог, земледелие отложу до худших времен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:11 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
В 4-м SL есть сокеты без ограничения на номера портов http://msdn.microsoft.com/ru-ru/library/system.net.sockets(v=vs.95).aspx Плюс, поддержка многоадресной рассылки UDP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:27 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Верблюд, ну ну, для тех кто по англицки не понимает, выдержка отсюда : выдержкаОдно дополнительное ограничение использования классов сокетов заключается в том, что диапазон целевого порта, к которому разрешено подключение сетевого приложения, должен находиться в пределах диапазона 4502-4534. Это единственные целевые порты, разрешенные подключением из приложения Silverlight с помощью сокетов. Если целевой порт не обнаружен в этом диапазоне портов, попытка подключения завершится неудачей. Целевой сервер может получать соединения по порту из этого ограниченного диапазона и перенаправлять их на другой порт (известный порт, например), если это необходимо для поддержки конкретного протокола существующего приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:34 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, специально для тех, кто за буквами не видит текста. Ссылка та же. авторВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов в пространстве имен System.Net.Sockets, включая новые классы UdpAnySourceMulticastClient и UdpSingleSourceMulticastClient без проверки политики. Доверенное приложение способно создавать TCP-подключение к любому порту любого узла, при этом файл политики междоменной связи не требуется. Целевой порт больше не должен находиться в диапазоне 4502-4534. Аналогичным образом доверенное приложение, использующее классы UdpAnySourceMulticastClient и UdpSingleSourceMulticastClient, может присоединиться к любой группе многоадресной рассылки через любой порт больший или равный 1024, при этом нет необходимости, чтобы ответчик авторизовал подключение. Чтобы воспользоваться преимуществами этих изменений не требуются дополнительные вызовы методов. Существующие методы не требуют проверок политики при запуске приложения вне браузера с повышенным уровнем доверия как доверенного приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 01:38 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Верблюд, подними глаза выше и читай внимательно: MSDNВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов... где гарантия что пользователь захочет ставить/инсталлировать приложение?! вот нашел пример со статьей по использованию Silverlight 4 + WCF NET.TCP правда пришлось немного постараться чтобы заработало, но работает. Модератор: уТКа и Верблюд, спокойнее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 02:19 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа MSDNВ Silverlight версия 4 доверенным приложениям также предоставлено разрешение на использование сетевых классов... где гарантия что пользователь захочет ставить/инсталлировать приложение?! Как это коррелирует с тем, что целевой порт (в SL4) обязан находиться в диапазоне 4502-4534? уТКа вот нашел пример со статьей по использованию Silverlight 4 + WCF NET.TCP правда пришлось немного постараться чтобы заработало, но работает. Чем этот пример лучше приведенного мною на чистых TCP коллбеках? Более того, я изначально писал и о дуплексе как варианте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 02:54 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, О мой бог... авторКак это коррелирует с тем, что целевой порт (в SL4) обязан находиться в диапазоне 4502-4534? Доверенным (читать как Установленным) снимаются ограничения, тем что вы запускаете из браузера без предварительной установки доступ к сокетам есть, но с ограничениями по целевому порту. авторЧем этот пример лучше приведенного мною на чистых TCP коллбеках? Более того, я изначально писал и о дуплексе как варианте. Фишка в том что это так называемый "Self hosted" сервер в виде веб-приложения, откомпилили, закинули на хостинг и все, запускать ничего не нужно, просто работать как с wcf-сервисом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:01 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКаДоверенным (читать как Установленным) снимаются ограничения, тем что вы запускаете из браузера без предварительной установки доступ к сокетам есть, но с ограничениями по целевому порту. Рузультат Application.Current.Install() будет являться гарантией? Жёсткий инсталл-таки, не дадим дальнейшего использования, пока результат не будет равен true. уТКаФишка в том что это так называемый "Self hosted" сервер в виде веб-приложения, откомпилили, закинули на хостинг и все, запускать ничего не нужно, просто работать как с wcf-сервисом. Хостить WCF можно как угодно, речь не об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:12 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, сегодня WAS для себя открыл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:13 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
bured, видимо да, технологий-то море. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:18 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, традиционные сокеты как-то слишком сложно для меня - не потяну, забуксую и брошу, нужно что-то попроще, WCF NET.TCP как раз нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:26 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКатрадиционные сокеты как-то слишком сложно для меня но самое то для игр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 03:34 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, если клиент сильвер, то я бы пожалуй выбрал PollingDuplex - специально разработан для браузерного соединения, в 4-ке весьма усовершенствован... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 11:24 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
LR, он весьма тормозной, да и не понятные ограничения по количеству соединений, не раз натыкался на жалобы людей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 13:03 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, хм... там пишут о возможности увеличить производительность (в 4-ке появился NetTcpBinding для polling duplex): Migration of client applications already utilizing HTTP polling duplex protocol to use net.tcp should require minimal changes in the application code. In practice, only the choice of the binding when creating a service proxy is affected. Similarly, a duplex WCF service already exposed over HTTP polling duplex endpoint will only require a new endpoint based on the NetTcpBinding from .NET Framework. This change can typically be done in configuration without modifying the service code. а что, 900 клиентов (для http) при ежесекундном оповещении недостаточно? одновременных участников игры будет больше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 13:23 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
Вдогонку. В статье есть ссылка касательно масштабирования сервиса Второе, трафик (http) можно уменьшить используя BinaryMessageEncodingBindingElement ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 13:32 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
LR, никто не знает как оно будет, может поедет, а может топориком на дно океяна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 13:34 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
LR, хорошо было бы живой солюшен наваять на HTTP дуплексе, приаттачить. Заинтересовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 13:42 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, ну так там же, в статьях Tomekа есть, вот из первой http://janczuk.org/code/samples/PollingDuplexSample.zip еще парочка (староватых, но не устаревших) ссылок: Pushing Data to a Silverlight Client with a WCF Duplex Service Silverlight 2 WCF Polling Duplex Support ну и еще нагуглить несложно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 14:10 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКаникто не знает как оно будет, может поедет, а может топориком на дно океяна. ну, так пилотный проект - на http polling duplex, а если "поедет" - либо масштабировать, либо переделать на net.tcp (сокеты или тот же polling duplex)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 15:00 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
А вообще, если по-надёжному: ASP.NET + AJAX (дергаем сервер по таймеру в js) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 15:04 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ: и тогда можно будет вернуться к вопросу заданному в первом посте... LR: да, думаю можно и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 15:51 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКаМСУ: и тогда можно будет вернуться к вопросу заданному в первом посте... ... и тогда можно будет вернуть в ответу, написанному во втором посте - ничего синхронизировать не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 16:28 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, у нас видимо разное представление об игре. Представляем мысленно: - люди заходят в игру, вы зашли быстрее меня на секунду; ... - звучит команда "стрелять" у нас с вами Ajax скрипт дергает какой-то метод на ASP.NET, у вас на секунду раньше, у меня на секунду позже, но уже нужно "стрелять", и на "стрелять" отведен промежуток к примеру 2 секунды, так вот, вы сделаете выстрел, а я не уверен что успею - еще раз, как вы будете синхронизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 18:12 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКа, О мой бог... Да не в синхронизации дело, а в периодичности запросов на сервер. Выставьте клиентскому таймеру минимальное значение и ожидайте "ответа". Во-вторых, на сервере не мешало бы сделать искуственную задержку для сбора результатов (чтобы все клиенты "успели" среагировать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 19:10 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУ, ну тогда и придумывать тут нечего, берем простой WCF и дергаем по заданному интервалу из Сервелата, аналогично из других Клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 19:41 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
МСУДа не в синхронизации дело, а в периодичности запросов на сервер. Выставьте клиентскому таймеру минимальное значение и ожидайте "ответа".Глупость. Синхронизация состояния участников в сетевых играх необходима. В противном случае это будут сферические кони-наблюдатели в вакууме без возможности взаимодействовать с другими участниками (хоть посредством сервера, хоть напрямую друг с другом - вот это как раз не так уж важно). МСУВо-вторых, на сервере не мешало бы сделать искуственную задержку для сбора результатов (чтобы все клиенты "успели" среагировать).Ржу-не-могу. МСУ, ты и в сетевых играх гурой уже стал? Не пиши ерунды, ты в этой теме ничего не соображаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 19:45 |
|
||
|
Синхронизация Клиент(а/ов)
|
|||
|---|---|---|---|
|
#18+
уТКаМСУ, ну тогда и придумывать тут нечего, берем простой WCF и дергаем по заданному интервалу из Сервелата, аналогично из других Клиентов. В принципе да. Это может быть и какой пейдж метод, и метод asmx, и метод WCF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2011, 19:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=21&tid=1442523]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 7ms |
| total: | 143ms |

| 0 / 0 |
