
Watsonwebsocket - самый простой и быстрый способ создания клиентских и серверных приложений, которые полагаются на обмен сообщениями с помощью веб -окетов. Его. Действительно. Легкий.
Большое спасибо и большое благодарность тем, кто тратит время на то, чтобы сделать эту библиотеку лучше!
@Bryancrotaz @foddermk @caozero @danatobob @data33 @ak5nowman @jjxtra @martyix @rajeshdua123 @tersers @mackey-255 @krookoo1 @joreg @ilsnk @xbarra @jlopvet @marco-manfroni-manfroni-manfroni- @exergist @ebarale99 @warstekhun @rubidium37 @codengine
Тестовый проект как для клиента ( TestClient ), так и для сервера ( TestServer ), который поможет вам понять и использовать библиотеку классов.
Тестовый проект, который порождает сервер и клиента и обменивается сообщениями здесь: https://github.com/jchristn/watsonwebsockettestest
Watsonwebsocket в настоящее время полагается на поддержку WebSocket, присутствующую в базовой операционной системе. Windows 7 не поддерживает веб -питания.
SSL поддерживается в Watsonwebsocket. Конструкторы для WatsonWsServer и WatsonWsClient принимают bool указывающий, должен ли SSL быть включен. Поскольку WebSockets и как побочный продукт WatsonWebSocket, используйте HTTPS, они полагаются на сертификаты в хранилище сертификации вашей операционной системы. Испытательный сертификат предоставляется как в проектах TestClient , так и TestServer , которые можно использовать для целей тестирования. Они не должны использоваться в производстве.
Для получения дополнительной информации об использовании сертификатов SSL, пожалуйста, обратитесь к вики.
Guid в ClientMetadataListClients теперь возвращает полную ClientMetadataSend* методы теперь возьмите guid , а не IpPort using WatsonWebsocket ;
WatsonWsServer server = new WatsonWsServer ( "[ip]" , port , true | false ) ;
server . ClientConnected += ClientConnected ;
server . ClientDisconnected += ClientDisconnected ;
server . MessageReceived += MessageReceived ;
server . Start ( ) ;
static void ClientConnected ( object sender , ConnectionEventArgs args )
{
Console . WriteLine ( "Client connected: " + args . Client . ToString ( ) ) ;
}
static void ClientDisconnected ( object sender , DisconnectionEventArgs args )
{
Console . WriteLine ( "Client disconnected: " + args . Client . ToString ( ) ) ;
}
static void MessageReceived ( object sender , MessageReceivedEventArgs args )
{
Console . WriteLine ( "Message received from " + args . Client . ToString ( ) + ": " + Encoding . UTF8 . GetString ( args . Data ) ) ;
} using WatsonWebsocket ;
WatsonWsClient client = new WatsonWsClient ( "[server ip]" , [ server port ] , true | false ) ;
client . ServerConnected += ServerConnected ;
client . ServerDisconnected += ServerDisconnected ;
client . MessageReceived += MessageReceived ;
client . Start ( ) ;
static void MessageReceived ( object sender , MessageReceivedEventArgs args )
{
Console . WriteLine ( "Message from server: " + Encoding . UTF8 . GetString ( args . Data ) ) ;
}
static void ServerConnected ( object sender , EventArgs args )
{
Console . WriteLine ( "Server connected" ) ;
}
static void ServerDisconnected ( object sender , EventArgs args )
{
Console . WriteLine ( "Server disconnected" ) ;
} server = new WatsonWsServer ( "http://localhost:9000/" ) ;
server . Start ( ) ; let socket = new WebSocket ( "ws://localhost:9000/test/" ) ;
socket . onopen = function ( ) { console . log ( "success" ) ; } ;
socket . onmessage = function ( msg ) { console . log ( msg . data ) ; } ;
socket . onclose = function ( ) { console . log ( "closed" ) ; } ;
// wait a moment
socket . send ( "Hello, world!" ) ; Когда вы настраиваете WatsonWebSocket для прослушивания на 127.0.0.1 или localhost , он будет отвечать только на запросы, полученные из локальной машины.
Чтобы настроить доступ из других узлов за пределами localhost , используйте следующее:
* или + . Вы должны:127.0.0.1 , вам может потребоваться запустить в качестве администратора (это зависит от операционной системы)netsh :netsh http show urlaclnetsh http add urlacl url=http://[hostname]:[port]/ user=everyone listen=yeshostname и port - это значения, которые вы используете в конструктореПожалуйста, обратитесь к Changelog.md для получения подробной информации.