{"id":15411460,"url":"https://github.com/thorium/sl5-duplex-chat","last_synced_at":"2025-06-29T18:35:54.468Z","repository":{"id":3485021,"uuid":"4540701","full_name":"Thorium/SL5-Duplex-Chat","owner":"Thorium","description":"Silverlight 5 Chat: Full-duplex Publish/Subscribe -pattern on TCP/IP concept demo (WCF F# \u0026 SL F#)","archived":false,"fork":false,"pushed_at":"2014-01-30T20:22:29.000Z","size":200,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-21T20:30:36.886Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Thorium.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-03T21:16:13.000Z","updated_at":"2015-06-30T19:39:48.000Z","dependencies_parsed_at":"2022-09-07T12:00:18.756Z","dependency_job_id":null,"html_url":"https://github.com/Thorium/SL5-Duplex-Chat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FSL5-Duplex-Chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FSL5-Duplex-Chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FSL5-Duplex-Chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thorium%2FSL5-Duplex-Chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thorium","download_url":"https://codeload.github.com/Thorium/SL5-Duplex-Chat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243685587,"owners_count":20330983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-01T16:49:10.521Z","updated_at":"2025-03-15T05:15:38.767Z","avatar_url":"https://github.com/Thorium.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Silverlight Chat\n\n+ Full-duplex TCP/IP concept demo. (\"PollingDuplex\")\n+ Publish/Subscribe -pattern: Client registers to server and server sends (push based) events from other users.\n+ Almost real-time communication with other users (/Silverlight clients)!\n+ Database could be made, but it is optional: Now the server just forwards (/filters) the client messages to other clients.\n\nThis is chat as a concept demo. The same concept could be used as for example multiplayer game (/multiuser software like Google Wave/Docs) with high interaction level between users. (Silverlight 5 works on Facebook, Windows Phone, ...) We could have one or many servers per user, so the user load could be distributed (eg. by location, game board coordinates, etc).\n\nDevelopment tool: Visual Studio 2012 RC (with Silverlight 5 SDK). Plugins: None.\nIIS is used as host. I haven't tried with others. WCF Serialization in binary mode, can be read with Fiddler2.\n\nTechnology stack:\n+ F# (FSharp) as main language\n+ WCF WebService (\"PollingDuplex\")\n+ Silverlight 5 client\n\nThis is quite much like the WebSocket concept which would propably work with the same source code, but different web.config for WCF service, but needs (Win8 based) IIS 8.\n  \nSetup:\n1. Use Visual Studio 11 (RC) and have Silverlight 5 SDK\n2. Set the WCFHost as start up project \n3. You may have to refererence FSharp core dll again (if you have a different version) \n4. From WCFHost project properties create virtual dir to IIS.\nThat's it.\n\nProject structure (the interesting ones):\n\n Servere side:\n  - WCFHost: (IIS VDir)\n    + PushService.svc WCF WebService host\n    + Chat.html: Silverlight host HTML page\n    + Web.Config: Some configs\n  - ServiceLogics:\n    + StreamClient.fs: Interface for push messages from server to client\n    + PushService.svc.fs: WebService logics, interface for client to call server\n Client side:\n  - DataClient\n    + Generated service reference\n  - ClientLogics:\n    + Commands.fs: Silverlight ICommands\n    + ClientViewModel.fs: Client side ViewModel for UI\n  - SLClient:\n    + MainPage.xaml: Silverlight UI\n\t\nReferences / similar stuff:\n - http://msdn.microsoft.com/en-us/library/cc645027(v=vs.95).aspx\n - http://www.c-sharpcorner.com/uploadfile/pchandraker/http-duplex-messaging-in-silverlight-4/\n - http://weblogs.asp.net/dwahlin/archive/2011/02/06/syncing-data-with-a-server-using-silverlight-and-http-polling-duplex.aspx\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorium%2Fsl5-duplex-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthorium%2Fsl5-duplex-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthorium%2Fsl5-duplex-chat/lists"}