【发布时间】:2017-07-25 11:44:06
【问题描述】:
我正在尝试在 Azure 上托管一个 websockets 服务器。我有点困惑,希望你能帮助我。
我关注了很多文章,但我的代码与本文中的代码接近:https://azure.microsoft.com/en-us/blog/introduction-to-websockets-on-windows-azure-web-sites/
public void ProcessRequest(HttpContext context)
{
if (context.IsWebSocketRequest)
{
context.AcceptWebSocketRequest(ProcessWS);
}
}
public bool IsReusable { get { return false; } }
private async Task ProcessWS(AspNetWebSocketContext context)
{
try
{
WebSocket socket = context.WebSocket;
while (true)
{
var url = context.RequestUri;
ArraySegment<byte> buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
if (socket.State == WebSocketState.Open)
{
string userMessage = Encoding.UTF8.GetString(buffer.Array, 0, result.Count)
.Trim(new char[] { ' ' }); // We remove the spaces before and after
// DO SOMETHING
}
else
{
break;
}
}
}
catch (Exception e)
{
Log.Info("Exception" + e.Message + " >>>" + e.StackTrace);
}
}
这很好,我可以从我的设备中获取消息并回复它们。
但在某些情况下,我需要向另一台设备发送消息,例如:
设备 A 发送“告诉设备 B 闪烁”
因为它是一个 websockets 服务器,并且设备 B 已经与服务器通信,所以我应该在某个地方与设备 B 建立连接。当设备 A 向我询问时,我可以向设备 B 发送消息。
但是我怎样才能用我的代码来实现呢?如何找到与设备 B 的连接?如果不可能,我应该怎么做?
我希望我的问题被描述得足够让人理解。
谢谢,
【问题讨论】: