我想从Azure中的一个辅助角色运行一个WebSocket服务器.
这在模拟器上本地工作正常,但是第一次运行套接字服务器时会出现Windows防火墙提示.
我想知道是否有人知道如何克服Azure上的套接字的连接问题.
我的socket服务器实现: 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
Run Code Online (Sandbox Code Playgroud)
客户端实现:
var socket = new WebSocket("ws://theappname.cloudapp.net:8080");
socket.onopen = function () {
status.html("Connection Opened");
};
socket.onclose = function () {
status.html("Connection Closed");
}
Run Code Online (Sandbox Code Playgroud)
closed加载页面后状态会更改为几秒钟.
我的工作者角色的端点如下:
WebSocket Input http 8080 <Not Set>
我现在尝试使用以下内容绑定到内部IP地址:
RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["WebSocket"].IPEndpoint.ToString();
解
为了在Azure上实现websockets时面临这一点的任何人;
如果不在端口80或8080上,您的防火墙可能会拒绝您的连接,因此请为其创建单独的部署.
必须将端点设置为TCP而不是HTTP才能创建正确的防火墙规则.(见图)

看一下将JSON用于基于.net REST的新系统,看起来很棒,但有一点可以暗示我的理解.保持应用程序任一端的JSON同步的策略是什么?
我的意思是,如果您为以下网站进行GET:www.mysite.com/item/12345.然后应用程序的.net端转到db,检索ID为12345的Item并将其解析为对象模型Item,然后将其序列化为JSON并返回.
如果您执行POST操作:www.mysite.com/item并通过 -
{
"Id": "12346",
"ItemName": "New Item",
"ItemCost": 45
}
Run Code Online (Sandbox Code Playgroud)
然后,应用程序的.net端将其拾取,将其反序列化为Item对象,然后将其移交以添加到db.
如何让双方,JS对象模型和.net对象模型序列化同步?这只需要手工维护,还是有一种基于.net模型序列化为JSON提供模板的聪明方法?
我只是在寻找最佳实践,并了解已完成的事情,并且没有看到客户端如何知道将JSON传递给服务器端.
StackOverflow在其所有页面上使用GZip编码; 他们的websocket流量似乎也是如此,因为它似乎完全混淆了.

他们如何/将用什么来实现这一目标; 而我需要做什么才能实现相同的目标,因为我的websocket服务器托管在没有IIS等的独立服务器上?
值得注意的http compression是,他们的websocket连接请求也没有设置.
完整日志截图:http://i44.tinypic.com/19s4yr.jpg
在C#应用程序中使用Pythonnet:
Python返回一个bytes ({<class 'bytes'>})对象,该对象是pickle.dumps操作的结果。
就持久性到Blob存储并重新存储bytes对象以在稍后阶段传递回Python 而言,用C#处理此对象的最佳方法是什么?
我试图反序列化以下JSON,但我真的不知道如何使用JSON.net来完成工作.我正在使用C#和JSON.Net库.
我的JSON如下:
{
"found": 3,
"bounds": [
[
-43.54919,
172.62148
],
[
-43.54487,
172.63654
]
],
"features": [
{
"id": 15342454,
"centroid": {
"type": "POINT",
"coordinates": [
-43.54779,
172.62148
]
},
"bounds": [
[
-43.54779,
172.62148
],
[
-43.54779,
172.62148
]
],
"properties": {
"osm_element": "node",
"amenity": "toilets",
"synthesized_name": "Toilets",
"osm_id": "502884303"
},
"geometry": {
"type": "POINT",
"coordinates": [
-43.54779,
172.62148
]
},
"location": {
"county": "Canterbury",
"country": "New Zealand",
"road": "Sommerset Crescent",
"city": "Christchurch"
},
"type": "Feature"
},
{ …Run Code Online (Sandbox Code Playgroud)