Avalonia跨平台入门第四十四篇之WebSocket

本来使用Avalonia玩耍跨平台还挺有意思,结果上面又给加了个移动套餐;本想着还是原来的思路满足一下呗;但是又想着玩点新玩具,这不咱就玩点不一样的玩具了;于是就在客户端的基础上了来了个简单对外服务用于浏览器的支持01c632dc75e95f8ae39e0653bd0b221e.png;

1、来看看在移动端效果:

2、直接HttpListener玩玩白:

public void StartHttpServer()
{
    _httpListener = new HttpListener();
    //你可以通过使用`+`符号来实现这一点,这样你的应用程序将监听所有IP地址上的指定端口。
    _httpListener.Prefixes.Add("http://+:9999/");
    _httpListener.Start();
    Task.Run(() => HandleRequests());
}

3、前端js直接玩耍WebSocket:

// 构建 WebSocket URL
 const socketUrl = `${protocol}://${host}:${port}/`;
 // 创建一个WebSocket连接
 socket = new WebSocket(socketUrl);
 // 监听连接打开事件
 socket.addEventListener('open', (event) => {
     console.log('WebSocket is open now.');
 });
 // 监听消息事件
 socket.addEventListener('message', (event) => {
     console.log('Message from server: ', event.data);
     // 使用 JSON.parse 将 JSON 字符串解析为对象
     const data = JSON.parse(event.data);
     console.log('Message from server: ', data);
     // 现在你可以访问 data 对象中的属性
     const devices = data.devices;
     devices.forEach(device => {
         const panel = createPanel(device);
         panelContainer.appendChild(panel);
         // 为每个面板添加点击事件监听器
         panel.addEventListener('click', function (event) {
             if (event.target.closest('.panel-header')) {
                 this.classList.toggle('expanded');
                 document.querySelectorAll('.panel').forEach(p => {
                     if (p !== this) {
                         p.classList.remove('expanded');
                     }
                 });
             }
         });
     });
 });

4、后端对于连接的客户端直接发送消息:

public override void OnWsConnected(HttpRequest request)
{
    Console.WriteLine($"Chat WebSocket session with Id {Id} connected!");
    // Send invite message
    string  message = "json数据";
    try
    {
        this.SendTextAsync(message);
    }
    catch (Exception ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

最终简单的效果先这样吧4704b20cd5adace7d18e8fd61e1cb213.png;以后有时间的话,可以再去摸索一下更复杂的效果a7a72e3810016714979cc768bfe1ff7c.png;编程不息、Bug不止、无Bug、无生活b2857545c793cd9f66140ce258c38d58.png;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值