首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpContext空对回调,XSockets回调

HttpContext空对回调,XSockets回调
EN

Stack Overflow用户
提问于 2014-08-05 06:22:41
回答 1查看 175关注 0票数 0

我使用XSockets在ASP.NET网站和某些服务器之间进行通信。当我通过XSockets从服务器收到回调时,我想使用Response()通知ASP.NET网站的前端。

我的主Default.aspx.cs页面如下所示:

代码语言:javascript
复制
// I want to access all these variables in the callback method
public HttpContext ctx;
public HttpSessionState session;
public int _theNumber;
public static CommHandler _commHandler

private void Page_Load(object sender, System.EventArgs e)
{
    _theNumber = 4; // Random number
    ctx = HttpContext.Current;

    _commHandler = new CommHandler( ...
                                    aPromptCallback: PromptCallback
                                    ...) //The callback, amongst othr parameters 

    session = HttpContext.Current.Session; //Try to access this in callback
    HttpContext.Current.Session["SomeClass"] = _someObject;
}

CommHandler基本上使用XSockets将数据发送到某个服务器,并期望(异步)有一些数据的答复。

在同一个Default.aspx.cs中,我有一个按钮单击函数,定义如下:

代码语言:javascript
复制
protected void Deploy(object sender, EventArgs e)
{
    _commHandler.SendData()
}

CommHandler使用XSockets Send()方法发送数据。当CommHandler接收到数据时,会触发内部回调,调用PromptCallback()

现在,PromptCallback()在相同的Default.aspx.cs文件中定义如下:

代码语言:javascript
复制
protected void PromptCallback(string aStr)
{
    var v = _theNumber; // This works as expected, the _theNumber is 4

    var j = (SomeClass)session["SomeClass"] // I can still access the session..

    ctx.Response.Write(aStr); // This does not work, amazingly ctx is now null

    //HttpContext.Current.Response.Write(aStr); // This does not work either
}

为什么_theNumber在回调时仍然是可访问的,但是到那时HttpContext是空的?

(我认为回调的生存期可能超过HttpContext的生存期,但为什么session/_theNumber仍然可以访问?)

我读过类似的问题(12) /文章(12),但对于如何解决这个问题仍然不确定。

EN

回答 1

Stack Overflow用户

发布于 2014-08-05 14:42:47

浏览器是否支持websockets,因为您使用的是来自服务器端的通信而不是JavaScript?

您现在可能可以使用HttpContext了,因为对XSockets的调用(在3.0.6版中)总是异步的。

使用XSockets 4.0 (目前处于预发布阶段),您将能够进行同步通信并等待响应。然后在回复中把它送回去。搜索此页面http://xsockets.github.io/XSockets.NET-4.0/以“将数据同步返回给调用方”-- C#和JS都有示例。

仍然不理解用例,但我相信您有充分的理由对这种落后的事情:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25132357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档