From 5ea5828cf929730ddf0aa75d90fcb36f57af54e5 Mon Sep 17 00:00:00 2001 From: sta Date: Sat, 13 Apr 2013 00:41:04 +0900 Subject: [PATCH] Modified README.md --- Example/Example.pidb | Bin 7034 -> 7034 bytes Example2/Example2.pidb | Bin 7882 -> 7825 bytes README.md | 59 ++++++++++++++++++++++++++- websocket-sharp.userprefs | 6 ++- websocket-sharp/websocket-sharp.pidb | Bin 321972 -> 321541 bytes 5 files changed, 63 insertions(+), 2 deletions(-) diff --git a/Example/Example.pidb b/Example/Example.pidb index e722365025a1f6958c5261b0eed1aa00b5758dde..ef4dd4ef6b1f4bfedfc1f7e46f50ef2816b2f7ca 100644 GIT binary patch delta 26 icmexm_RDNSJL9U29RZw-y_;`xwlFceY>wlR;RgVpF$wDc delta 26 icmexm_RDNSJL9sA9RZw-&6{s>wlFa|ZjR%T;RgVoQ3=`r diff --git a/Example2/Example2.pidb b/Example2/Example2.pidb index be8d641a8ea095f0bb9ab70825e4b08874ac1ae3..e5a67cb58c67cc9b508d3477216b04c7347ad6be 100644 GIT binary patch delta 380 zcmX?QJJEJRJEPRbj{97UQ#WUDw=gj-p8S@#o$>$XQod$xTTXoj1_m}$Ai?6AoRJTt z8MqkDfTST13-K{9Fq#7yMnKF6!WKZn7>GGQ9LvdeQnIdAAg*ggVs1fBsu7ztkjLVj zkyrwxfhO4iNsviWAd_r?47f>lKn~m_`^^iaG#MEkCZCd)XLOwWO4^>$X|k4#GNbck zKN&v-7oggAK+LEOB(#8-35YpefrKL)&^m|7dt@%vy8*c{z~~5MIRG)IJ4^^jGdckY z2Ovfjb%u$002weK0J4(>h&e@p1TV7y$Tl!v0w&1C#SXR;6fg`7lX>M-Co{>#b8>HC I2MaI&0RIgwd;kCd delta 447 zcmbPed&+h~JEPdfj{97Uy_++*TbLNpJ)0>50|SR^MPhD2PO1@` z8IZ@~nw*gjq#3vv&4HvL5DW1!FfdvG8Ad?N2*Q>?!Wf7-KpZO|VFJV;z$gJEgn)P@ z3y90Wz-A335H{EVc`VKui6tO8E=@*TAO*5Q3S@;HkO8;C9>{@P;jnqSlqMsiAt24@3={Q476rKi ztkw%jQ~=} + { + Console.WriteLine("Laputa says: {0}", e.Data); + }; + + ws.Connect(); + ws.Send("BALUS"); + Console.ReadKey(true); + } + } + } +} +``` + #### Step 1 #### Required namespace. @@ -21,7 +47,7 @@ The `WebSocket` class exists in the `WebSocketSharp` namespace. Creating a instance of the `WebSocket` class. ```cs -using (WebSocket ws = new WebSocket("ws://example.com")) +using (var ws = new WebSocket("ws://example.com")) { ... } @@ -140,6 +166,37 @@ In addition, the `Close()` and `Close(code)` methods exist. ### WebSocket server ### +```cs +using System; +using WebSocketSharp; +using WebSocketSharp.Server; + +namespace Example { + + public class Laputa : WebSocketService + { + protected override void OnMessage(MessageEventArgs e) + { + var msg = e.Data.Equals("balus", StringComparison.InvariantCultureIgnoreCase) + ? "I've been balused already..." + : "I'm not available now."; + Send(msg); + } + } + + public class Program { + + public static void Main(string[] args) + { + var wssv = new WebSocketServiceHost("ws://dragonsnest.far/Laputa"); + wssv.Start(); + Console.ReadKey(true); + wssv.Stop(); + } + } +} +``` + #### Step 1 #### Required namespace. diff --git a/websocket-sharp.userprefs b/websocket-sharp.userprefs index 9b182064..a518f3ad 100644 --- a/websocket-sharp.userprefs +++ b/websocket-sharp.userprefs @@ -1,6 +1,10 @@  - + + + + + diff --git a/websocket-sharp/websocket-sharp.pidb b/websocket-sharp/websocket-sharp.pidb index 5c36af8332b161b817c98e76c169787afad220e9..5a6ccf185968c555bf08c97363622b2ed93744ef 100644 GIT binary patch delta 12670 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 delta 13012 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