
O WatsonWebSocket é a maneira mais fácil e rápida de criar aplicativos de clientes e servidores que dependem de mensagens usando o WebSockets. Isso é. Realmente. Fácil.
Muito obrigado e muito agradecimento àqueles que dedicam um tempo para melhorar esta biblioteca!
@Bryancrotaz @foddermk @caoZero @danatobob @data33 @ak5nowman @jjxtra @martyix @rajeshdua123 @tersers @mackkey-255 @krookoo1 @joreg @ilco @xBarra @mawkhish005 @krookoo1 @joreg @ilco @xBarra @mawksh005 @krookoo1 @joreg @ilco @xBarra @mAwkh005 @exergist @ebarale99 @warstekhun @rubidium37 @codengine
É incluído um projeto de teste para clientes ( TestClient ) e servidor ( TestServer ), que ajudará você a entender e exercitar a biblioteca de classes.
Um projeto de teste que gera mensagens de servidor e cliente e trocas pode ser encontrado aqui: https://github.com/jchristn/watsonwebsockettestestest
Atualmente, o WatsonWebSocket depende do suporte do WebSocket no sistema operacional subjacente. O Windows 7 não suporta websockets.
O SSL é suportado no WatsonwebSocket. Os construtores do WatsonWsServer e WatsonWsClient aceitam um bool indicando se o SSL deve ou não ser ativado. Como o WebSockets, e como um subproduto WatsonWebSocket, use o HTTPS, eles dependem de certificados no armazenamento de certificados do seu sistema operacional. Um certificado de teste é fornecido nos projetos TestClient e TestServer , que podem ser usados para fins de teste. Estes não devem ser usados na produção.
Para obter mais informações sobre o uso de certificados SSL, consulte o wiki.
Guid em ClientMetadataListClients agora retorna ClientMetadata completo MetadataSend* Métodos agora tomam guid em oposição ao 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!" ) ; Quando você configura o WatsonWebSocket para ouvir em 127.0.0.1 ou localhost , ele só responderá às solicitações recebidas de dentro da máquina local.
Para configurar o acesso de outros nós fora do localhost , use o seguinte:
* ou + . Você deve:127.0.0.1 , pode ser necessário executar como administrador (este depende do sistema operacional)netsh :netsh http show urlaclnetsh http add urlacl url=http://[hostname]:[port]/ user=everyone listen=yeshostname e port são os valores que você está usando no construtorConsulte o Changelog.md para obter detalhes.