Skip to content

SignalR APIs For Client

sakamoto-poteko edited this page May 18, 2016 · 23 revisions

SignIn

参数列表

参数 类型 备注
用户名 string -
密码 string -

介绍

该方法被Invoke时,服务端将使用Identity为其登录。

成功返回Json:

{ "IsSucceeded": true, "Token": "blablabla", "VMIP": "60.60.60.60" }

失败返回Json:

{ "IsSucceeded": false, "Token": null, "VMIP": null }

为了避免穷举破解,服务端需要建立一个HashTable,来记录每个IP的失败次数,1小时内失败次数超过30次则拒绝接受来自该IP的请求。

登录成功后,服务端将判断有无为该用户分配节点,若已分配节点,则调用Pomelo.NetCore.Azure为其开机并注册Instance IP。若未分配节点则需调用Pomelo.NetCore.Azure为其开通一个VM实例并注册Instance IP。

完成Instance IP注册后,回调客户端方法OnNodeDistributed


SignOut

参数列表

无参数

介绍

该方法被Invoke时,服务端将使用Identity注销其登录状态。该方法不回调任何客户端方法。


TokenSignIn

参数列表

参数 类型 备注
Token string -

介绍

该方法被Invoke时,服务端将在数据库中搜索该Token信息,查询是否过期,若未过期则使用Identity为用户记录登录状态,同时回调客户端方法OnLoginSucceeded。若Token已经过期,则需要回调客户端OnTokenExpired方法。登录失败回调OnTokenSignInFailed方法。

成功返回Json:

{ "IsSucceeded": true, "VMIP": "60.60.60.60" }

失败返回Json:

{ "IsSucceeded": false, "VMIP": null }

为了避免穷举破解,服务端需要建立一个HashTable,来记录每个IP的失败次数(Token过期不算失败),1小时内失败次数超过30次则拒绝接受来自该IP的请求。

登录成功后,服务端将判断有无为该用户分配节点,若已分配节点,则调用Pomelo.NetCore.Azure为其开机并注册Instance IP。若未分配节点则需调用Pomelo.NetCore.Azure为其开通一个VM实例并注册Instance IP。

完成Instance IP注册后,回调客户端方法OnNodeDistributed


ForgotVerifyEmail

参数列表

参数 类型 备注
Email string 用户注册时的电子邮箱地址

介绍

该方法被Invoke时,服务端将向该Email发送一封含有验证码的电子邮件,同时服务器端建立一个存储结构,来记录Email对应的验证码,有效期为1小时。发送完毕后,应回调客户端ShowMessage返回提示信息。


Forgot

参数列表

参数 类型 备注
Email string 用户注册时的电子邮箱地址
验证码 string 服务端发送的验证码
新密码 string -

介绍

该方法被Invoke时,服务端将验证验证码是否合法有效,若有效则为其重置密码,并回调OnResetPasswordSucceeded。否则回调ShowMessage返回错误信息。


ResetPassword

参数列表

参数 类型 备注
当前密码 string -
新密码 string -

介绍

该方法被Invoke时,服务端将使用Identity校验密码是否正确,并为其重置密码。无论成功失败都回调客户端ShowMessage方法返回提示信息。


RegisterVerifyEmail

参数列表

参数 类型 备注
Email string 用户欲使用的Email地址

介绍

该方法被Invoke时,服务端将检查该邮箱是否已被注册,若已注册则回调客户端ShowMessage返回提示信息。否则服务端将向该Email发送一封含有验证码的电子邮件,同时服务器端建立一个存储结构,来记录Email对应的验证码,有效期为1小时。发送完毕后,应回调客户端ShowMessage返回提示信息。


Register

参数列表

参数 类型 备注
Email string 用户欲使用的Email地址
验证码 string 服务端发送的验证码
用户名 string -
密码 string -

介绍

该方法被Invoke时,服务端将检查该用户名是否被占用,若已注册则回调客户端ShowMessage返回提示信息。否则使用UserManager为其注册,并回调客户端ShowMessage返回成功提示信息。


GetProjectTemplates

参数列表

无参数

介绍

该方法被Invoke时,服务端将会回调客户端的OnProjectTemplatesReceived方法。

回调时传递的JSON形式应如下:

[
    { "Title": "ASP.Net Core Empty", "URL": "https://github.com/PolemoIDE/Polemo.NetCore.Template/archive/asp-net-core-empty.zip", "Description": "<p>HTML Here</p>" },
    { "Title": ".Net Core Console", "URL": "https://github.com/PolemoIDE/Polemo.NetCore.Template/archive/dot-net-core-console.zip", "Description": "<p>HTML Here</p>" }
]

GetProjects

参数列表

无参数

介绍

该方法被Invoke时,服务端将返回当前用户的全部项目信息的json集合(以最后打开时间降序排序),形式如下:

[
    { "Project": "Polemo.NetCore.Server", "Git": "https://github.com/PolemoIDE/Polemo.NetCore.Server", "SshKey": "blablabla", "Name": "Amamiya Yuuko", "Email": "1@1234.sh" },
    { "Project": "Polemo.NetCore.Node", "Git": "https://github.com/PolemoIDE/Polemo.NetCore.Node", "SshKey": "blablabla", "Name": "Amamiya Yuuko", "Email": "1@1234.sh" }
]

CreateProject

参数列表

参数 类型 备注
项目名称 string 项目Clone至~/中,假如项目为Polemo.NetCore.Node,该参数传递的是Polemo.NetCore.Node
Git源 string HTTPS或GIT协议
SSH Key string git所需要的ssh key
Name string git所需要的昵称
Email string git所需要的电子邮箱地址

介绍

该方法被Invoke时,服务端将写入数据库,为用户存储项目基本信息。该方法不回调客户端方法。


OpenProject

参数列表

参数 类型 备注
Git源 string HTTPS或GIT协议

介绍

该方法被Invoke时,服务端仅更新项目最后编辑时间。


* On_Disconnected事件

当触发Disconnect事件时,服务端为其预留3分钟的Reconnect时间,超出3分钟若客户端没有重连,且没有其他实例连接至节点端,则调用Polemo.NetCore.Azure关闭虚拟机及删除Instance IP。