可以在Raspberry Pi工作中进行自托管信号



我想拥有基于c#/mono/signalr的网页托管在Raspberry pi上 - 这可能吗?

我设法编写了一个客户端 - 服务器解决方案,其中SignalR Hub托管在运行IIS 8的PC上。PI上的控制台应用程序与C#SignalR Client连接到服务器中心。ASP.NET服务器还托管了一个"远程控制"页面,供浏览器客户端发送命令到PI,但现在我想消除PC作为要求,并在PI上托管了所有内容。

tldr

可以做到!视频。代码。

长篇小说

我设法获得了与Nancy,Signalr和基于OWIN的Web服务器的解决方案,而Nowin从Rasperry Pi(Mono 3,Hard Float)上的控制台应用程序运行。请参阅此解决方案中的rpi.Nancy项目:

https://github.com/neutmute/rpi.demo

与是连接到IIS Signalr主机的纯客户端相比,PI作为自托管Web服务器的PI更加卑鄙。敲除范围范围滑块的响应非常缓慢,需要几秒钟的时间才能完成几秒钟的更新流,以在其停止向客户端移动后完成馈送到服务器。在PC上运行相同的自托管服务器也显示了一些滞后,但不如PI上的慢速。

在运行自托管信号时,单声道过程将滑块拖动并传输信号事件流时为97%。当以IIS作为集线器服务器的纯客户端模式下,这不会发生这种情况,但是,当滑块猛烈拖动时,IIS服务器确实会遇到高CPU的使用,因此也许应该宽恕PI的小滞后。

我也尝试过katana作为网络服务器,但它的运行速度比现在慢。

请注意,如果仅在此处和那里发送几个按钮按下几个按钮,则完全自托管的SignalR解决方案可以正常工作 - 仅在来回拖动滑块并产生连续的事件流时,滞后才出现。一种解决方案可能是通过敲除绑定从滑块进行油门的更新,并减少滑块事件的分辨率。

也值得注意的是,在PI上托管时,SignalR无法使用Web插座,因为仅当Signalr托管IIS 8上的SignalR。使用服务器端事件传输时才可用。在纯客户端模式下,这是相同的运输。