Skip to content
A flat-ui framework for c#/.net application using SVG targeting browsers
C# JavaScript HTML CSS
Branch: master
Clone or download
joreg Merge pull request #17 from superusercode/patch-1
Fix README rendering and links
Latest commit dd2410c Mar 30, 2017
Type Name Latest commit message Commit time
Failed to load latest commit information.
Demo.WinForms fixed nuget references Jul 9, 2014
Dependencies removed super socket Jul 2, 2014
Source fixed nuget references Jul 9, 2014
.gitignore Initial commit Mar 7, 2014
LICENSE Initial commit Mar 7, 2014
Posh.sln got poshdemo to work again (now really) Jul 3, 2014 Fix README rendering and links Mar 25, 2017


misusing the browser as your windowing/interaction/drawing layer for your c#/.net desktop applications by streaming [SVG] ( graphics via the [WAMP] ( v1 protocol to browsers. For some more details read the [announcement] (

Applications using Posh

Running the Demo

  • Open Demo.WinForms\PoshDemo.sln
  • Rightclick the solution icon -> Restore Packages
  • Now it should build and run

Code Overview

comes with


  • is an HTTP server
  • serves the \web\posh.html as answer to any URL request only with a unique WebSocket port configured for each URL
  • on /root it serves a listing of all saved *.xml documents


  • has a WebSocket listening on the specified port
  • translates RPCs that come in via WebSocket to local calls
  • registers a WAMPListener on the WebSocket
  • registers Posh topics (pub/sub) on WAMP (Add, Update, Remove)
  • publishes Posh RPCs (Dump, SetSessionName, KeyDown, KeyUp, KeyPress)
  • has an SvgEventCaller
  • handles a RemoteContext per Session
  • can publish Posh after every RPC (AutoPublish) or manually on Publish()


  • acts as kind of a buffer between changes to the local and the remote SVG DOM
  • keeps track of local DOM changes
  • provides them in Posh form (json/xml) on demand


  • is a custom ID manager for SVG
  • gets SvgEventCaller from WampServer
  • OnAdd(element)
  • adds the element to the RemoteContext
  • calls element.RegisterEvents() on the element handing it the SvgEventCaller
  • registers itself on element.AttributeChanged so it can reflect those changes on the RemoteContext
  • OnDelete(element)
  • calls element.UnregisterEvents()


  • represents a dynamic RPC for being able to be registered at the WampHost


the web/js part of posh that

  • receives Posh snippets and
  • manipulates the SVG DOM accordingly
  • registers RPCs as eventhandler
  • calls eventhandler
You can’t perform that action at this time.