Tôi muốn chạy máy chủ WebSocket khỏi vai trò công nhân trong Azure.Chạy Fleck (hoặc bất kỳ) Máy chủ Websocket trên Windows Azure
Tính năng này hoạt động tốt trên trình mô phỏng, nhưng có một cửa sổ tường lửa nhắc nhở lần đầu tiên máy chủ socket chạy.
Tôi tự hỏi nếu có ai biết cách khắc phục sự cố kết nối liên quan đến ổ cắm trên Azure.
My thực hiện socket server: OnStart
var server = new WebSocketServer("ws://theappname.cloudapp.net:8080/");
server.Start(socket =>
{
socket.OnOpen =() =>
{
Trace.WriteLine("Connected to " + socket.ConnectionInfo.ClientIpAddress,"Information");
_sockets.Add(socket);
};
});
.... etc
Việc thực hiện khách hàng:
var socket = new WebSocket("ws://theappname.cloudapp.net:8080");
socket.onopen = function() {
status.html("Connection Opened");
};
socket.onclose = function() {
status.html("Connection Closed");
}
Những thay đổi trạng thái để closed
một vài giây sau khi tải trang.
endpoint của tôi cho vai trò công nhân dưới đây:
WebSocket Input http 8080 <Not Set>
bây giờ tôi đã cố gắng liên kết với địa chỉ IP nội bộ bằng cách sử dụng sau đây:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
GIẢI PHÁP
Vì lợi ích của bất kỳ ai khác phải đối mặt với điều này khi triển khai ổ cắm web trên Azure;
Tường lửa của bạn có thể sẽ từ chối kết nối nếu không ở cổng 80 hoặc 8080 để tạo triển khai riêng cho nó.
Điểm cuối phải được đặt thành TCP và không phải HTTP cho các quy tắc tường lửa chính xác được tạo. (Xem hình)
Chỉ vì mục đích dùng thử, tại sao bạn không thay đổi Endpoit đầu vào của mình từ giao thức "http" sang "tcp". Và đặt cổng cục bộ thành 8080 (trong trường hợp của bạn là). Ngoài ra, bạn phải ghi nhớ rằng Windows Azure Load Balancer sẽ giết bất kỳ kết nối nào không hoạt động trong hơn 60 giây. –
astaykov
@astaykov - Nhận xét của bạn đã dẫn đến giải pháp, vui lòng đăng bài bên dưới để tôi có thể + tin tưởng bạn. Cảm ơn. – f0x
@astaykov Bạn có thực hiện đầy đủ?Tôi đang cố gắng để tôi làm việc và chưa bao giờ làm điều này trước đây. – Yecats