码迷,mamicode.com
首页 > Windows程序 > 详细

c#WebSocket

时间:2020-09-17 17:09:09      阅读:42      评论:0      收藏:0      [点我收藏+]

标签:input   void   and   each   style   相互   网上   listen   creat   

最近需要WebSocket,就去网上找了Demo

先附地址:https://www.cnblogs.com/sheseido/p/7047948.html

 

先是Html端的代码,也算客户端吧:新建一个WebApplication空项目就行了,然后添加要给Html页,设未起始页

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>websocket client</title>
    <script type="text/javascript">
        var start = function () {
            var inc = document.getElementById(incomming);
            var wsImpl = window.WebSocket || window.MozWebSocket;
            var form = document.getElementById(sendForm);
            var input = document.getElementById(sendText);

            inc.innerHTML += "connecting to server ..<br/>";

            // create a new websocket and connect
            window.ws = new wsImpl(ws://localhost:7181/);

            // when data is comming from the server, this metod is called
            ws.onmessage = function (evt) {
                inc.innerHTML += evt.data + <br/>;
            };

            // when the connection is established, this method is called
            ws.onopen = function () {
                inc.innerHTML += .. connection open<br/>;
            };

            // when the connection is closed, this method is called
            ws.onclose = function () {
                inc.innerHTML += .. connection closed<br/>;
            }

            form.addEventListener(submit, function (e) {
                e.preventDefault();
                var val = input.value;
                ws.send(val);
                input.value = "";
            });

        }
        window.onload = start;
    </script>
</head>
<body>
    <form id="sendForm">
        <input id="sendText" placeholder="Text to send" />
    </form>
    <pre id="incomming"></pre>
</body>
</html>

然后就是服务端:一个控制台应用程序即可

using Fleck;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace websocket
{
    class Program
    {
        static void Main(string[] args)
        {

            FleckLog.Level = LogLevel.Debug;
            var allSockets = new List<IWebSocketConnection>();
            var server = new WebSocketServer("ws://0.0.0.0:7181");
            server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    Console.WriteLine("Open!");
                    allSockets.Add(socket);
                };
                socket.OnClose = () =>
                {
                    Console.WriteLine("Close!");
                    allSockets.Remove(socket);
                };
                socket.OnMessage = message =>
                {
                    Console.WriteLine(message);
                    allSockets.ToList().ForEach(s => s.Send("Echo: " + message));
                };
            });


            var input = Console.ReadLine();
            while (input != "exit")
            {
                foreach (var socket in allSockets.ToList())
                {
                    socket.Send(input);
                }
                input = Console.ReadLine();
            }

        }
    }
}

然后先运行服务端,在运行客户端,就可以相互发送消息了

技术图片

 

c#WebSocket

标签:input   void   and   each   style   相互   网上   listen   creat   

原文地址:https://www.cnblogs.com/fanlin92/p/13626109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!