這是一個Windows媒體播放器C#代碼我正在處理,它發送一個TCP WebSocket消息回客戶說,MP3音頻仍在播放。Websockets消息不被髮送
我正在使用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));
}
}
我不明白:你的代碼表示,如果(成品)...發送(「仍在播放」)? – TonyWilk
當axWindowsMediaPlayer1.status檢測到「Finished」狀態時,我需要向Websocket發送一條消息,在這個例子中,消息簡直就是「Audio still Playing ...」,但在最終的代碼中會有其他的東西,比如這個音頻完成播放...等。 – AJ152
好的 - 但是,你的if(Finished)是否在你的serverStartup()中,是否應該在axWindowsMediaPlayer1_StatusChange()方法中? – TonyWilk