对于数据库查询的过滤条件,在长时间运行的控制器中必须有参数。可以将QueryString参数传递给自定义控制器,但我还没有找到一种方法来实现长时间运行的控制器。这有可能吗?
发布于 2013-12-19 06:14:16
嗯..。不可能将参数传递给远程运行控制器。我要做的是使用querysting设置属性,或者将它们作为查询中的参数传递给您的CustomController。由于在长期运行中存在该定制控制器的一个实例,因此您可以进行过滤,也可以只调用某个方法(如此处所示的http://xsockets.net/docs/c-server-api#longrunning-internal-controllers )。
您也可以这样做
using System;
using System.Timers;
using Microsoft.Ajax.Utilities;
using XSockets.Core.Common.Globals;
using XSockets.Core.Common.Socket;
using XSockets.Core.XSocket;
using XSockets.Core.XSocket.Helpers;
using XSockets.Plugin.Framework;
namespace MyWeRole.Controllers
{
[XSocketMetadata("LongrunningController1"
, Constants.GenericTextBufferSize
, PluginRange.Internal) ]
public class LongrunningController1 : XSocketController
{
static MyCustomController1 customController1;
static LongrunningController1()
{
//Initialize your long running stuff here
customController1 = new MyCustomController1();
var timer = new System.Timers.Timer();
timer.Interval = 3000;
timer.Elapsed += TimerOnElapsed;
timer.Start();
}
private static void TimerOnElapsed(object sender
, ElapsedEventArgs elapsedEventArgs)
{
var objectToSend = new {SomeInt = 1, SomeString = "HelloWorld"};
customController1
.SendTo( c => c.Interest.Equals("Travel")
, objectToSend.AsTextArgs("YourTopic") );
}
}
public class MyCustomController1 : XSocketController
{
public string Interest { get; set; }
public MyCustomController1 ()
{
// set the default interset
this.Interest = "Travel";
}
}
}由于您可以使用JavaScript修改控制器上的属性,因此您可以使用
ws.publish("set_Interest",{value: 'Code'});希望这能有所帮助!
https://stackoverflow.com/questions/20500283
复制相似问题