2014-07-20 2 views
3

Существует два способа поддерживать открытое соединение между сервером Dart и клиентом Dart: ServerSocket и Websocket.В чем разница между ServerSockets и Websockets?

https://www.dartlang.org/dart-by-example/#sockets
https://www.dartlang.org/dart-by-example/#websockets

Когда лучше использовать один вместо другого?

+3

Ответ на этот похожий вопрос кажется довольно хорошим http://stackoverflow.com/questions/2681267 (ServerSocket == TCP-сокеты) –

ответ

4

Websocket - протокол, построенный на верхних нормальных сокетах, основанных на протоколе TCP (ServerSocket и Socket). Websockets дают вам больше комфорта при программировании, потому что это помогает вам:

  • Обрамление: TCP основан на потоке, веб-камеры позволяют отправлять пакеты. Вам не обязательно искать начало и конец вашего пакета.
  • Закрытие рукопожатия: вы можете отправить сообщение о причине закрытия.
  • Безопасность (в контексте браузера, не требуется в контексте консольного приложения)
  • Вы также можете получить доступ к вашему серверу Websocket через API Webbrowser.

Если вы хотите работать вместе с существующими серверами/клиентами, использующими TCP, вам необходимо использовать ServerSockets. Websockets и ServerSockets несовместимы (преднамеренно, по соображениям безопасности). Поскольку у Websockets больше встроенных функций, производительность и пропускная способность не будут такими же хорошими, как raw TCP, но этот момент ничтожно мал.

Оба протокола могут использоваться с шифрованием, Websockets с использованием HTTPS-соединения (wss: //) и TCP с использованием TLS (SecureSocket и SecureServerSocket).

Для получения более подробной информации о Websockets см. RFC. RawDatagramSocket позволяет использовать протокол UDP в дополнение к TCPS-серверам на основе TCP.

Смежные вопросы