1

I've created the basic Websharper UI.Next client server running Suave.IO app. I'm using latest Xamarin on OSX Yosemite. I updated all the nuget packages after installing the template project and then just ran it.

I've started the application and changed the logging level to verbose and I get

➜  Release  mono bookman.exe
[V] 2015-12-01T11:56:06.8822300Z: initialising BufferManager with 827392 bytes [Suave.Socket.BufferManager]
[I] 2015-12-01T11:56:06.9302920Z: listener started in 70.389 ms with binding 127.0.0.1:8080 [Suave.Tcp.tcpIpServer]
[V] 2015-12-01T11:56:15.4114760Z: 127.0.0.1 connected, total: 1 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:15.4164780Z: reserving buffer: 811008, free count: 99 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:15.4225250Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:15.4235180Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:15.4376480Z: reserving buffer: 802816, free count: 98 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:15.4582650Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:15.4621430Z: freeing buffer: 802816, free count: 99 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:15.5131730Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:15.5181060Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:15.6607220Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.0019320Z: suave back in control [Suave.Owin]
[V] 2015-12-01T11:56:16.0116030Z: writing preamble [Suave.Owin]
[V] 2015-12-01T11:56:16.0211620Z: writing body [Suave.Owin]
[V] 2015-12-01T11:56:16.0303130Z: 'Connection: keep-alive' recurse [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.0304930Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.0305660Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.0307270Z: reserving buffer: 802816, free count: 98 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1559600Z: 127.0.0.1 connected, total: 2 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:16.1561280Z: reserving buffer: 794624, free count: 97 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1561380Z: 127.0.0.1 connected, total: 3 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:16.1562290Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1563940Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1563040Z: reserving buffer: 786432, free count: 96 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1564960Z: reserving buffer: 778240, free count: 95 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1565750Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1567340Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1568210Z: reserving buffer: 770048, free count: 94 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1570000Z: 127.0.0.1 connected, total: 4 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:16.1570010Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1570910Z: reserving buffer: 761856, free count: 93 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1572860Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1573510Z: freeing buffer: 802816, free count: 94 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1571330Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1574930Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1573700Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1577420Z: 127.0.0.1 connected, total: 6 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:16.1577780Z: reserving buffer: 770048, free count: 95 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1579350Z: reserving buffer: 778240, free count: 94 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1578170Z: freeing buffer: 778240, free count: 95 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1573460Z: 127.0.0.1 connected, total: 5 clients [Suave.Tcp.job]
[V] 2015-12-01T11:56:16.1579710Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1582570Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1580370Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1584480Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1582100Z: reserving buffer: 802816, free count: 93 [Suave.Tcp.job] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1583410Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1585490Z: reserving buffer: 753664, free count: 92 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1579110Z: freeing buffer: 770048, free count: 96 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1580860Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1582740Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1586270Z: -> processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1590750Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1589400Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1591580Z: freeing buffer: 770048, free count: 93 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1591550Z: reading first line of request [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1595200Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1592410Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1595470Z: reserving buffer: 753664, free count: 93 [Suave.Web.readMoreData] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1596290Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1594700Z: freeing buffer: 753664, free count: 94 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1601570Z: reading headers [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1601740Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1603330Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1604170Z: freeing buffer: 753664, free count: 94 [Suave.Web.split] [Suave.Socket.BufferManager]
[V] 2015-12-01T11:56:16.1606270Z: parsing post data [Suave.Web.processRequest]
[V] 2015-12-01T11:56:16.1607050Z: <- processor [Suave.Web.httpLoop.loop]
[V] 2015-12-01T11:56:16.1873560Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/bookman.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1874960Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Core.JavaScript/Runtime.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1873840Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Web.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1873750Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Main.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1875140Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Collections.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1874390Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.UI.Next.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1880110Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.1880580Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.1881790Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.1882790Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.1883520Z: yielding to OWIN middleware [Suave.Owin]
[V] 2015-12-01T11:56:16.1879490Z: yielding to OWIN middleware [Suave.Owin]

the critical log lines being

V] 2015-12-01T11:56:16.1873560Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/bookman.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1874960Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Core.JavaScript/Runtime.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1873840Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Web.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1873750Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Main.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1875140Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.Collections.min.js' [Suave.Http.ServeResource.resource]
[V] 2015-12-01T11:56:16.1874390Z: failed to find resource by key '/Users/bradphelan/Projects/bookman/bookman/Scripts/WebSharper/WebSharper.UI.Next.min.js' [Suave.Http.ServeResource.resource]

The javascripts are not loading. This can also be seen in the browser.

javascripts not loading

bradgonesurfing
  • 30,949
  • 17
  • 114
  • 217

1 Answers1

1

You need to do Files.browseHome before your Owin.ofApp to turn suave into a file server.

This thread goes through solving the problem https://github.com/c4fsharp/c4fsharp/pull/1

Henrik
  • 9,714
  • 5
  • 53
  • 87
  • Isn't this something the Websharper Suave bridge should do internally? There is no mention of this in the examples. http://websharper.com/blog-entry/4556/announcing-websharper-suave – bradgonesurfing Dec 01 '15 at 12:40
  • Those directories don't actually exist. I assume the javascript files are either packaged in the websharper assemblies or dynamically generated. – bradgonesurfing Dec 01 '15 at 12:44
  • But I tried what you suggested anyway. It does not work. https://gist.github.com/bradphelan/c1072664c8560c4c9966 – bradgonesurfing Dec 01 '15 at 12:52
  • 1
    I think this is an issue with the bridge. You can see that the registered web parts look on disk, from the logs. I think WebSharper should catch the request by registering an assembly-resource/dynamic web part that sends the responses. – Henrik Dec 01 '15 at 17:09
  • I've opened an issue with websharper. https://github.com/intellifactory/websharper.suave/issues/7 – bradgonesurfing Dec 02 '15 at 05:07
  • Here is their bridge code https://github.com/intellifactory/websharper.suave/blob/master/WebSharper.Suave/Main.fs – bradgonesurfing Dec 02 '15 at 05:09