实现web套接字服务器在Azure云服务Web角色
问题描述:
我有一个MVC4网站要求我已经在我的Azure云服务的Web角色,像这样使用Alchemy实现的web套接字服务器:实现web套接字服务器在Azure云服务Web角色
namespace MvcWebRole1
{
public class WebRole : RoleEntryPoint
{
private static List<UserContext> Users = new List<UserContext>();
public override bool OnStart()
{
Task.Factory.StartNew(OnStartWebSocketServer, TaskCreationOptions.LongRunning);
return base.OnStart();
}
private void OnStartWebSocketServer()
{
var aServer = new WebSocketServer(5004, IPAddress.Any)
{
OnReceive = OnReceive,
OnSend = OnSend,
OnConnect = OnConnect,
OnConnected = OnConnected,
OnDisconnect = OnDisconnect,
TimeOut = new TimeSpan(0, 5, 0)
};
aServer.Start();
}
我目前仍在尝试本地调试,但无法连接到服务器,我在Chrome调试器中获得Unexpected response code: 200
。
有什么方法可以检查服务器是否正在运行显示控制台?这甚至是一个好方法吗?我对Azure和网络套接字完全陌生,并且仍在尝试学习基础知识,所以如果我没有检查一些基本设置,请原谅我。
编辑: 正如桑德里诺所建议的,我已经检查了网络角色的终点。我已将所有内容都切换到端口5004,希望它未被使用。但我仍然得到Windows Azure Tools: Warning: Remapping private port 5004 to 5005 in role 'MvcWebRole1' to avoid conflict during emulation.
。我也为这些端口在我的防火墙上添加了一个例外,但仍然没有任何效果。
答
我想出了问题所在。我打开的端点是HTTP,而Web套接字则通过TCP工作。为了解决这个问题,必须有:
- 使用http的网站的一个端点。
- 另一个端点使用TCP和
您已经添加了81端口的输入端点到您的Web角色在webrole.cs指定的端口网络套接字服务器? – 2013-02-14 13:03:22
我现在做了,但仍然是同样的错误。在输出中,我得到'将角色'MvcWebRole1'中的专用端口81重新映射到82,以避免在仿真过程中发生冲突。所以我改变了我的客户端端口,但仍然是相同的错误:/ – Matt 2013-02-15 08:54:51
@SandrinoDiMattia我想通过您的意见,如果你写一个答案,我会接受它。 – Matt 2013-02-15 10:27:21