0

我正在使用XSockets。现在,从 xsocket 控制器内部,我需要访问我的用户数据。我试过这样做:

public class SocialsController : XSocketController, Controller

但这是不允许的。有没有办法让我访问 SocialsController 中的所有会话数据?

4

1 回答 1

2

您不能在 XSockets 中使用 ASP.NET 会话,因为服务器在 IIS 之外运行。将来您可能可以,但不能在当前版本中。

您在 XSockets 中创建的每个连接都有自己连接的控制器实例。所以我们在控制器上有状态,而常规的 HTTP/ASP.NET MVC 没有状态。这就是他们需要会话的原因。

那么,如果您在 XSockets 中刷新/更改页面怎么办?由于控制器将“死亡”,因此您将失去状态......但是,XSockets 拥有自己的 SessionStorage,因此您可以将数据存储在服务器上以供特定客户端使用。可以从 JavaScript 和 C# 访问此 SessionStorage。

C# 示例存储一个 Person 对象,但它可以是任何东西

//Save in storage (will be there even if you disconnect and then reconnect)
this.StorageSet("me",new Person{Name="Uffe", Age=35});
//Get from storage (casting to correct type).
var p = (Person)this.StorageGet("me");

JavaScript

//设置,但检查http://xfiddle.net/XFiddle/获取、设置、删除、getall

var myStorageObject = { Key: 'foo', Value: $("#storeValue").val() };
ws.trigger(XSockets.Events.storage.set, myStorageObject);

问候乌夫

于 2013-03-24T16:27:01.433 回答