【发布时间】:2014-02-26 13:55:43
【问题描述】:
这是我正在编写的 Windows Media Player C# 代码,它将 TCP WebSocket 消息发送回客户端,说明 mp3 音频仍在播放。
我正在使用axWindowsMediaPlayer1.StatusChange,StatusChange 会相应地触发消息,但即使我可以在我的 WMP C# 应用程序中接收来自客户端的消息。
我不明白为什么它不会将var message_back = "Audio still Playing..."; 发送回客户端。
private void Form1_Load(object sender, EventArgs e)
{
lblMessage.Text = "";
axWindowsMediaPlayer1.URL = @"C:\Audio\song1.MP3";
axWindowsMediaPlayer1.Ctlcontrols.stop();
this.axWindowsMediaPlayer1.StatusChange += new EventHandler(axWindowsMediaPlayer1_StatusChange);
this.axWindowsMediaPlayer1.StatusChange += new EventHandler(serverStartup);
}
public void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.status == "Finished")
{
lblMessage.Text = "CONTINUE PLAYING...";
axWindowsMediaPlayer1.Ctlcontrols.play();
}
}
public void serverStartup(object sender, EventArgs e)
{
FleckLog.Level = LogLevel.Debug;
var allSockets = new List<IWebSocketConnection>();
var server = new WebSocketServer("ws://localhost:8181");
server.Start(socket =>
{
socket.OnOpen = () =>
{
allSockets.Add(socket);
};
socket.OnClose = () =>
{
allSockets.Remove(socket);
};
socket.OnMessage = message =>
{
allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
};
});
if (axWindowsMediaPlayer1.status == "Finished")
{
var message_back = "Audio still Playing...";
foreach (var socket in allSockets.ToList())
{
socket.Send(message_back);
}
// I tried using this line bellow, but it won't work either.
//allSockets.ToList().ForEach(s => s.Send("Echo: " + message_back));
}
}
【问题讨论】:
-
我不明白:你的代码说 if(Finished)...send("still playing") ???
-
当 axWindowsMediaPlayer1.status 检测到“完成”状态时,我需要向 Websocket 发送一条消息,在本例中该消息只是“音频仍在播放...”,但在最后代码将是别的东西,比如这个音频已经播放完毕......等等。
-
好的 - 但是,你的 if(Finished) 在你的 serverStartup() 中,它应该在 axWindowsMediaPlayer1_StatusChange() 方法中吗?
-
axWindowsMediaPlayer1_StatusChange() 方法不必在 serverStartup() 函数中,但那是我需要一点帮助的地方,我不知道如何在没有它的情况下发送消息那个函数 serverStartup()
-
我不明白为什么这被标记为'php' :-)
标签: c# .net websocket windows-media-player