我想在 Raspberry Pi 上托管一个基于 C#/mono/signalR 的网页 - 这可能吗?
我设法编写了一个客户端-服务器-客户端解决方案,其中 signalR 集线器托管在运行 IIS 8 的 PC 上。 pi 上的控制台应用程序使用 c# signalR 客户端连接到服务器集线器。 asp.net 服务器还托管一个“远程控制”页面,供浏览器客户端向 pi 发送命令,但现在我想消除 PC 的要求,并将所有内容托管在 pi 上。
TLDR
可以办到!Video http://www.youtube.com/watch?v=s_ZQtiupyzE. Code https://github.com/neutmute/RPi.Demo.
很长的故事
我设法找到了一个解决方案Nancy https://github.com/NancyFx/Nancy、SignalR 和基于 OWIN 的网络服务器NoWin https://github.com/Bobris/Nowin从 Raspberry Pi(mini 3,硬浮动)上的控制台应用程序运行。请参阅此解决方案中的 RPi.Nancy 项目:
https://github.com/neutmute/RPi.Demo https://github.com/neutmute/RPi.Demo
与连接到 IIS SignalR 主机的纯客户端相比,作为自托管 Web 服务器的 pi 有点滞后。 knockout.js 绑定范围滑块的响应非常慢,更新流在客户端停止移动后需要几秒钟才能完成传送到服务器。在 PC 上运行相同的自托管服务器也会出现一些延迟,但不像在 Pi 上那么慢。
在运行自托管 signalR 时,当拖动滑块并传输 signalR 事件流时,单声道进程消耗了 97%。在以 IIS 作为中心服务器的纯客户端模式下,不会发生这种情况,但是,当猛烈拖动滑块时,IIS 服务器确实会遇到高 CPU 使用率,因此也许 pi 的一点延迟应该被原谅。
我也尝试过Katana http://katanaproject.codeplex.com/作为网络服务器,但它的运行速度甚至比 NoWin 还要慢。
请注意,如果仅在这里或那里发送几次按钮按下操作,完全自托管的 SignalR 解决方案就可以正常工作 - 仅当来回拖动滑块并生成连续的事件流时,滞后才会明显。一种解决方案可能是通过淘汰绑定限制滑块的更新并降低滑动事件的分辨率。
另外值得注意的是,SignalR 在 pi 上托管时无法使用 Web 套接字,因为它们仅在 SignalR 托管在 IIS 8 上时可用。而是使用服务器端事件传输。这与纯客户端模式下的传输相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)