чаты. Точно так же chat tutorial загрузил чат-стол, вы можете просто иметь таблицу «номеров». Тогда вы можете захватить только комнату, которую вы хотите. Потому что пистолет использует partials, чтобы быть быстрым, он только завершит загрузку данных, на которые вы подписаны. Да, клиенты могут хранить только подмножество данных в целом, но это, конечно, может повлиять на уровни репликации/сохранения. Если вы беспокоитесь об этом, то запуск «сильного» партнера (например, сервера) - это простое и идеальное решение, так как оно будет поддерживать все. (И, к сожалению, потому что у WebRTC есть проблемы *, вам как-то придется запускать peer-сервер ретранслятора в любом случае. Поэтому также можно использовать его для хранения).
Несколько экземпляров. Вам не нужно создавать экземпляры нескольких пистолетов на ключ. На самом деле это плохо. Лучше, если вы этого не сделаете. Возможно, однако мы не тестировали это столько, сколько должны, потому что это не идеально.
Безопасность/авторизация - очень трогательная тема, так что это зависит от того, как вы хотите создать свое приложение. Если вы собираетесь работать с истинным P2P/децентрализованным дизайном, вам нужно будет сделать общий/закрытый ключ cryptography and signatures. Таким образом, другие пользователи не могут действительно читать данные, даже если они могут помочь в резервном копировании данных.Однако, если вы хотите, чтобы все упрощалось и создавалось ваше приложение, так как большинство приложений построено ... как централизованная служба, тогда вы прокси-сервер записываете на свой сервер. Это тот же самый метод, который большинство людей использует в настоящее время при создании приложений, и GUN может делать то же самое.
Данные по ограничению использования WiFi/скорости. К сожалению, это недоступно в JavaScript, но похоже, что такие гибридные приложения, как вы упомянули в PhoneGap, могут получить доступ к этой информации. GUN предназначен для работы в таких сценариях, поскольку он не работает в режиме онлайн. Но как вы взаимодействуете с внешними API-интерфейсами, которые дают вам эти условия ... вне моего опыта, но выполнимы.
Временные данные/ограничение передачи данных. Сначала см. Мой ответ, выполнимый, но зависящий от внешних API. С точки зрения ограничения запросов, да, да. A: Мы скоро представим «лексические курсоры», которые позволят клиентам сдерживать ответы, однако мы, вероятно, будем постепенно наращивать каждую из своих возможностей ограничений (поскольку это не было огромным приоритетом для сообщества, но ваше участие будет эскалировать его!), сначала с точными совпадениями свойств (думаю, как оператор выбора SQL), на самом деле это то, что мы будем использовать для создания расширения запроса SQL для пушки!), затем второй лексический диапазон (выберите свойства, начинающиеся с 'a' через 'c'), который может быть выполнен с диапазонами временных меток, затем третий байт-ограничение (например, только отправьте обратно не более 200 байт за раз). Тем не менее, очевидная вещь, которую вы можете сделать самостоятельно (не то, что вы хотите), вы могли бы просто иметь столик комнат, а затем комната представляет собой таблицу кусков, а куски - это таблица сообщений. Потенциально с комнатой, имеющей «последний» фрагмент, вы можете легко получить доступ к вашему чату, выполнив gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); });
или что-то в этом роде. Это позволит вам точно контролировать условия, которые вы хотите, но также означает, что вам нужно немного поработать.
Циркулярные ссылки. Для вас уже есть столько круговых ссылок, сколько вы хотите - это то, где пистолет превосходит из-за его структуры графика (круговые ссылки, таблицы, документы, ключ/значение, что угодно).
Да, пушка может контролировать несколько ключей одновременно.
Использование собственного сервера для хранения ... это может означать пару разных вещей. Как запустить собственный пушечный сервер? Для этого есть простая оболочка: https://www.npmjs.com/package/gun-server. Если вам нужны примеры с Express, и все это просто. Как использовать существующую файловую систему в развернутом сервере как хранилище, потому что вы не хотите использовать S3? Вы можете использовать драйвер уровня https://github.com/PsychoLlama/gun-level. Это ответ?
* WebRTC требует, чтобы серверы STUN/ICE/сигнализации загружали соединение WebRTC. Это очень раздражает. Это означает, что даже если WebRTC является P2P, для того, чтобы подключиться, вам нужно пройти через какой-либо сервер, и это должно радоваться за каждую загрузку страницы. Из-за этого мы по умолчанию пушка пушки с websockets/JSONP, что она должна подключаться к peer-серверу ретранслятора пистолета (есть также аналогичные ретрансляторы для сообществ, которые люди могут использовать для личных экспериментов, но легко управлять своими силами, в пункте 4). В результате мы еще не выпустили адаптер WebRTC, несмотря на то, что пистолет WebRTC + - идеальный вариант - глупые серверы STUN/ICE/сигнализации.
Это так много вопросов за раз, было бы лучше разбить его на более мелкие вопросы. – nawfal