ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#使用websocket

2021-01-21 15:04:48  阅读:894  来源: 互联网

标签:websocket socket c# allScokets ws 使用 message sockets


websocket可以把它当做是一个程序提供相应的服务的。

所以创建一个websocket首先要创建一个程序(服务)。所以我们可以用winform创建一个程序来启动websocket程序。(当然也可以用其他的方式,反正能创建一个websocket服务就行)

1、首先要引用fleck插件

 2、贴代码

public static void Dosocket()
        {
            try
            {
                //存放连接服务器的socket对象
                var allScokets = new List<IWebSocketConnection>();
                var server = new WebSocketServer("ws://172.60.65.82:5555");            //创建webscoket服务端实例,到时用户连接这个socket(地址和端口随便填,不要冲突就行)
                server.Start(socket =>
                {
                    socket.OnOpen = () => {
                        allScokets.Add(socket);                          //这是把每一个socket添加到allScokets中(表示当有一个页面连接上这个socket的时候,就会多一个socket)
                    };
                    //关闭链接
                    socket.OnClose = () =>
                    {
                        allScokets.Remove(socket);                        //用户断开socket连接时,就把这个用户的socket移除
                    };
                    //监听发送数据
                    socket.OnMessage = message =>                         //给用户发送的消息
                    {
                        foreach (IWebSocketConnection sockets in allScokets)
                        {
                            if (sockets.ConnectionInfo.Path.Equals($@"/?{message}"))    //根据获取得到的message做相应的操作
                            {
                                sockets.Send(wareHouse.getLocationRecord(message));
                            }
                        }
                    };
                });
            }
            catch (Exception) { }
        }

这样就创建完一个websocket了。

你可以把这段代码放在一个winform程序中,winform启动的时候启动这个websocket。

(我的是web api程序。所以放在了routeConfig文件中,在程序启动的时候回自动启动这个websocket)

2、如何调用

<script>
        //连接websocket
        var ws = new WebSocket("ws://172.60.65.82:5555");
        ws.onopen = function () {
            console.log("连接成功!")
        };
        ws.onmessage = function (result) {
            console.log("获取成功信息:" + result.data)
        };
        ws.onerror = function (error) {
            console.log("获取错误信息:" + error.data)
        };
        ws.onclose = function () {
            console.log("连接关闭!")
        };//绑定
        $("#zhanban").on("keypress", function () {
            if (event.keyCode == "13") {  //发送websocket
               if (ws.readyState == WebSocket.OPEN) {
                   ws.send("123456");
               }
               else {
                  console.log("还未连接websocket!")
               }
            }
        })
    </script>

 

 

连接socket可以传参数

var ws = new WebSocket("ws://172.60.65.82:5555?LW0601");

后台接收参数如上socket代码所示:

socket.OnMessage = message =>
{
    foreach (IWebSocketConnection sockets in allScokets)
    {
        if (sockets.ConnectionInfo.Path.Equals($@"/?{message}"))
        {
            sockets.Send(wareHouse.getLocationRecord(message));
        }
    }
};

注意:websocket只有在部分的浏览器中有用,在一些旧的浏览器中是没有用的。

标签:websocket,socket,c#,allScokets,ws,使用,message,sockets
来源: https://www.cnblogs.com/masha2017/p/14308027.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有