c# - 带有 Web 套接字 MatchingTweetReceived 的 Twitter 流未在 twitterinvl 中触发
问题描述
我正在创建一个 twiiter stremaing MVC 控制器。控制器方法实现为 Web 套接字。
参考:使用 MVC 控制器将 websockets 连接到 windows azure在此处输入链接描述
我想在 UI 中显示 twitter 流。我正在使用 twitterinvl。我的代码包含在下面。流事件 MatchingTweetReceived 未从控制器方法触发。
对此的任何帮助都将受到高度赞赏。
控制器动作方法。
public ActionResult About()
{
if (ControllerContext.HttpContext.IsWebSocketRequest)
{
ControllerContext.HttpContext.AcceptWebSocketRequest(DoTalking);
}
return new HttpStatusCodeResult(HttpStatusCode.SwitchingProtocols);
}
其余代码
public async Task DoTalking(AspNetWebSocketContext context)
{
try
{
WebSocket socket = context.WebSocket;
while (true)
{
var buffer = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);
if (socket.State == WebSocketState.Open)
{
string userMessage = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);
string outmessage = "Empty";
//userMessage = "You sent: " + userMessage + " at " + DateTime.Now.ToLongTimeString();
Auth.SetUserCredentials("<<credential>>", "<<credential>>", "<<credential>>", "<<credential>>");
var stream = Stream.CreateFilteredStream();
stream.AddTrack("enterhash");
stream.MatchingTweetReceived += (sender, theTweet) =>
{
outmessage = theTweet.Tweet.CreatedBy.ToString() + theTweet.Tweet.CreatedAt + theTweet.Tweet;
buffer = new ArraySegment<byte>(Encoding.UTF8.GetBytes(userMessage));
//Console.WriteLine($"Tweet: {theTweet.Tweet.CreatedAt} {theTweet.Tweet}");
socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
};
stream.StartStreamMatchingAllConditions();
Trace.WriteLine(outmessage);
//await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
}
else
{
break;
}
}
}
catch (Exception ex)
{
}
}
解决方案
推荐阅读
- apache-spark - 为什么在内存错误后的新步骤中 EMR 集群上有更多可用 RAM?我可以提前更改吗?
- reactjs - React 应用程序和 AWS S3 静态托管 - 深度路径路由失败
- amazon-web-services - 在 AWS 上为单个 ECS 设置子域
- javascript - 无法读取未定义的属性(读取“substr”)
- html - Angular 材质表中未指定名称属性的表单控件没有值访问器
- pascal - 如何将数组中的奇数相乘?
- python - 我在 python 脚本中编写了一个正则表达式来分析 xml 文件,但遗憾的是它不起作用
- python - 将复杂对象实例传递给子类进程的类
- intellij-idea - 复制行,后跟向下箭头在 Mac 上跳过一行,如何更改此行为?
- javascript - 设置每个数字数组的圆圈大小(最小 20 像素,最大 130 像素)