[英]Websockets messages not being sent
This is a Windows Media Player C# code I'm working on, that sends a TCP WebSocket message back to the client saying that the mp3 audio is still playing. 这是我正在使用的Windows Media Player C#代码,它将TCP WebSocket消息发送回客户端,表明mp3音频仍在播放。
I'm using axWindowsMediaPlayer1.StatusChange
, and the StatusChange
triggers the message accordingly it seems, but even though I can receive messages from the client in my WMP C# application. 我正在使用
axWindowsMediaPlayer1.StatusChange
,并且StatusChange
会相应触发消息,尽管我可以在WMP C#应用程序中从客户端接收消息。
I can't figure out why it won't send the var message_back = "Audio still Playing...";
我无法弄清楚为什么它不发送
var message_back = "Audio still Playing...";
back to the client. 回到客户。
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));
}
}
I'm guessing quite a bit here, however, assuming your axWindowsMediaPlayer1_StatusChange
is being called - add your message sender in there: 我在这里猜测很多,假设您的
axWindowsMediaPlayer1_StatusChange
被调用-在其中添加消息发件人:
// made this global for simplicity...
static List<IWebSocketConnection> allSockets;
allSockets = new List<IWebSocketConnection>();
public void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
{
if (axWindowsMediaPlayer1.status == "Finished")
{
// send message...
var message_back = "Starting again...";
foreach (var socket in allSockets.ToList())
{
socket.Send(message_back);
}
// I assume this restarts playback...
lblMessage.Text = "CONTINUE PLAYING...";
axWindowsMediaPlayer1.Ctlcontrols.play();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.