1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dotnetchina-weaving-socket

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Weaving-socket — это фреймворк для разработки интерактивных приложений, основанный на TCP-коммуникации. Он подходит для создания IoT-приложений, приложений с очередями сообщений, WebSocket-приложений и мобильных коммуникационных приложений.

Фреймворк поддерживает различные способы взаимодействия между интерфейсом и сервером: синхронный и асинхронный, а также поддерживает несколько протоколов: JSON, Bytes и Custom.

В отличие от других архитектур, Weaving-socket имеет встроенные протоколы, которые обеспечивают целостность данных.

Подготовка к разработке

  • Установка и загрузка:
    • Nuget можно использовать для поиска пакетов.
    • Weave.TCPClient — пакет для асинхронных запросов от клиента.
    • Weave.TcpSynClient — пакет для синхронных запросов от клиента.
    • Weave.Server — пакет для разработки серверной части.
    • U3D-разработка — пакет nuget Weave.TCPClient.
    • Примеры кода для клиентов на Lua, Python и Android/Java.
  • Запуск:
    • Сначала напишите код для клиента и сервера, настройте IP и PROT. Затем запустите сервер и клиент.

Классы и их описание

  • Серверные классы в пакете Weave.Server:
    • WeaveP2Server — класс для сокет-сервера.
    • WeaveWebServer — класс для WebSocket-сервера.
    • HttpServer — класс для HTTP-протокола.
    • WeaveUDPServer — класс для UDP-сервера.
    • События в серверных классах включают:
      • weaveReceiveBitEvent — событие для приёма данных типа Bytes или Custom.
      • waveReceiveEvent — событие для приёма данных типа Json.
      • WeaveReceiveSslEvent — событие для получения данных с SSL-шифрованием.
      • weaveDeleteSocketListEvent — событие при отключении клиента.
      • weaveUpdateSocketListEvent — событие при подключении клиента.
    • Send(soc, command, data) — метод отправки данных на сервере.
  • Асинхронные клиентские классы в пакете Weave.TCPClient:
    • P2Pclient — класс для клиентского сокета.
    • WeaveUDPclient — класс для клиентского UDP.
    • Примеры кода на Lua, Python, Android/Java и WebSocket JS.
    • События в асинхронных клиентских классах включают:
      • ReceiveServerEventbit — событие для приёма данных типа Bytes или Custom.
      • ReceiveServerEvent — событие для приёма данных типа Json.
      • Timeoutevent — событие при потере соединения.
    • Send() — метод отправки данных клиентом.
  • Синхронные клиентские классы в пакете Weave.TcpSynClient:
    • TcpSynClient — класс для синхронного клиентского запроса, который завершается только после получения ответа от сервера.

Пример кода сервера

Создайте консольную программу и добавьте ссылки на следующие библиотеки:

using Weave.Base; using Weave.Server;

Затем напишите следующий код:

static void Main(string[] args)
{
    WeaveP2Server server = new WeaveP2Server(WeaveDataTypeEnum.Bytes);//инициализация класса
    server.receiveevent += Server_receiveevent;//регистрация события приёма
//можно зарегистрировать и другие события, такие как подключение нового клиента или отключение клиента
    server.start(8989);//запуск прослушивания порта 8989
     
   
    Console.WriteLine("8989listen:");
    Console.ReadKey();
}

private static void Server_receiveevent(byte command, string data, System.Net.Sockets.Socket soc)
{
    Console.WriteLine(data);//вывод информации, полученной от клиента
}

Для WebSocket и UDP серверов замените WeaveP2Server на WeaveWebServer и WeaveUDPServer соответственно.

Примеры кода клиента

  • Для асинхронного запроса:

Добавьте ссылки на библиотеки:

using Weave.TCPClient; using Weave.Base;

Напишите следующий код:

P2Pclient client = new P2Pclient(DataType.bytes);//инициализация класса
static void  Main(string[] args)
{
   
    client.timeoutevent += Client_timeoutevent;//регистрация события тайм-аута подключения
    client.receiveServerEvent += Client_receiveServerEvent;//регистрация события получения данных
      client.start("127.0.0.1", 8989, false);//подключение к серверу на 127.0.0.1 и порту 8989 без необходимости токена от сервера
    System.Threading.Thread.Sleep(1000);
    Console.WriteLine("server link OK:");
    client.send(0x1, "test2017-5-5");//отправка информации на сервер, где 0x01 — команда, которая может принимать значения от 0 до 254, кроме 0x9c и 0xff, которые зарезервированы
    Console.WriteLine("send:test2017-5-5");
    Console.ReadKey();
}

private static void Client_receiveServerEvent(byte command, string text)
{
  //command — команда от сервера
  //text — данные от сервера
}

private static void Client_timeoutevent()
{
 //событие при потере связи или тайм-ауте, которое запускает перезапуск соединения
    client。Restart(false);//переподключение
}
 
  • Для синхронного запроса:

Используйте nuget Weave.TcpSynClient. tcpSynClient.Send(0x01, "asdasd"); // отправить запрос

while (true)

var commdata = tcpSynClient.Receives(null); // ожидание подтверждения

Клиент WebSocket:

          socket = new UDCsocket({
                //115.28.26.204
                ip: 'ws://127.0.0.1', port: 11001, conn: function () {
                  //  socket.settakon("123123");
                    alert("Соединение успешно");
                    //socket.SendData(1, "login", "123123ssdfsdf", "");
                }
                , recData: function (text) {
                    //$('#test').html("");
                    $('#test').append("Получено:" + text + '<br/>  ')//этот смысл вы все поняли, добавьте
                }
                , close: function () { alert("Соединение закрыто"); }
                , error: function (msg) { alert("Ошибка соединения" + msg); }
                , jump: function (ip) { alert("Сервер превысил максимальное соединение, пожалуйста, подключитесь к другому серверу:" + ip); }
            });
  socket.SendData(0x02, "GetLISTimei", '', ""); //отправить содержимое

Пример клиента Python:

Использование клиента Python

Введение в связанные проекты расширения:

WeaveMicro — микросервисная архитектура Поддержка .net core 2.x–5.x, нормальное использование

https://gitcode.com/dreamsfly9001/weave-micro

Основная цель WeaveMicro микросервисной архитектуры — максимально упростить и уменьшить сложность разработки и сложность, максимально использовать двойное нажатие. Не интегрировать операционную базу данных и другие содержания, пусть разработчики выбирают по привычке. Отвечать только за самое основное содержание. Максимально упростить методы вызова и способы запуска.

WeavingDB — это облегчённая удобная база данных в памяти, кэш-библиотека. На основе weaving-socket, приглашаем всех учиться и использовать

https://gitee.com/UDCS/WeavingDB

База данных на основе weaving-socket коммуникационной архитектуры, кэш-библиотека в памяти.

WsocketAutoUpPrj — это пример программы автоматического обновления и обновления нескольких версий программного обеспечения weaving-socket.

https://gitee.com/UDCS/WsocketAutoUpPrj

Другие примечания:

Из-за изменений версии некоторые видеоконтент и версии не подходят, только для справки.

Свяжитесь с нами:

QQ группа общения 17375149 Связаться с QQ/WeChat: 20573886

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Поддержка .NET, core, U3D, интернета вещей, web, универсальная, сокетная коммуникация через шлюз, архитектура со встроенным протоколом, гарантия целостности данных. В NuGet можно найти пакеты Weave.TCPClient и Weave.Server. Развернуть Свернуть
C# и 6 других языков
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dotnetchina-weaving-socket.git
git@api.gitlife.ru:oschina-mirror/dotnetchina-weaving-socket.git
oschina-mirror
dotnetchina-weaving-socket
dotnetchina-weaving-socket
New