1

我有一个 MVC4 网站,它需要一个 Web 套接字服务器,我在 Azure 云服务的 Web 角色中使用Alchemy实现了该服务器,如下所示:

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();           
        }

我目前仍在尝试在本地调试,但无法连接到服务器,我进入Unexpected response code: 200了 Chrome 调试器。

有什么方法可以检查服务器是否正在运行,例如显示控制台?这甚至是一个好方法吗?我对 Azure 和 Web 套接字完全陌生,并且仍在尝试学习基础知识,所以如果我没有检查一些基本设置,请原谅。

编辑:正如 Sandrino 所建议的,我已经检查了网络角色端点。我已将所有内容切换到端口 5004,希望它未被使用。但是我仍然得到Windows Azure Tools: Warning: Remapping private port 5004 to 5005 in role 'MvcWebRole1' to avoid conflict during emulation.. 我还在这些端口的防火墙中添加了一个例外,但仍然没有任何效果。

4

1 回答 1

1

我弄清楚了问题所在。我打开的端点是 HTTP,而 Web 套接字通过 TCP 工作。为了解决这个问题,必须有:

  • 使用 http 的网站的一个端点。
  • 使用 tcp 和 webrole.cs 中指定的端口的 Web 套接字服务器的另一个端点
于 2013-02-17T15:36:11.617 回答