
Watsonwebsocket est le moyen le plus simple et le plus rapide de créer des applications client et serveur qui s'appuient sur la messagerie à l'aide de WebSockets. C'est. Vraiment. Facile.
Un grand merci et beaucoup d'appréciation à ceux qui prennent le temps d'améliorer cette bibliothèque!
@Bryancrotaz @foddermk @caozero @danatobob @ data33 @ ak5nowman @jjxtra @martyix @ rajoreg @ilSnk @xbarra @ mawkish00 @jloppet @ marco -manfroni-pelugiating @giantizmo @exergiste @ ebarale99 @warstekhun @ rubidium37 @codengine
Un projet de test pour le client ( TestClient ) et le serveur ( TestServer ) est inclus, ce qui vous aidera à comprendre et à exercer la bibliothèque de classe.
Un projet de test qui engendre un serveur et un client et échange des messages peut être trouvé ici: https://github.com/jchristn/watsonwebsockettest
Watsonwebsocket s'appuie actuellement sur la prise en charge de WebSocket étant présente dans le système d'exploitation sous-jacent. Windows 7 ne prend pas en charge WebSockets.
SSL est soutenu dans Watsonwebsocket. Les constructeurs de WatsonWsServer et WatsonWsClient acceptent un bool indiquant si SSL doit être activé ou non. Étant donné que WebSockets, et en tant que sous-produit Watsonwebsocket, utilisez HTTPS, ils s'appuient sur des certificats dans le magasin de certificats de votre système d'exploitation. Un certificat de test est fourni dans les projets TestClient et TestServer qui peuvent être utilisés à des fins de test. Ceux-ci ne doivent pas être utilisés dans la production.
Pour plus d'informations sur l'utilisation des certificats SSL, veuillez vous référer au wiki.
Guid dans ClientMetadataListClients Renvoie désormais ClientMetadata complèteSend* les méthodes maintenant prenez guid par opposition à 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!" ) ; Lorsque vous configurez WatsonWebsocket pour écouter sur 127.0.0.1 ou localhost , il ne répondra qu'aux demandes reçues de la machine locale.
Pour configurer l'accès à partir d'autres nœuds en dehors de localhost , utilisez ce qui suit:
* ou + . Vous devez:127.0.0.1 , vous devrez peut-être s'exécuter en tant qu'administrateur (ce système d'exploitation est-il dépendant)netsh :netsh http show urlaclnetsh http add urlacl url=http://[hostname]:[port]/ user=everyone listen=yeshostname et port sont les valeurs que vous utilisez dans le constructeurVeuillez vous référer à Changelog.md pour plus de détails.