C#使用websocket-sharp创建websocket服务

前言

当我们在开发web网页端应用时,如果要调用读卡器、扫描仪或第三方动态库时,由于javascript并不具备调用能力,故我们需要将参数通过websocket传给C#(或其他语言)客户端。由C#客户端来调用动态库或第三方API。

本文中,我们主要讲述C#如何使用websocket-sharp创建websocket服务,完成web应用和C#应用之间的交互。

websocket-sharp是一个C#实现websocket协议客户端和服务端。

使用步骤

1、创建控制台应用,从Nuget添加引用websocket-sharp

或从https://github.com/sta/websocket-sharp下载源码生成websocket-sharp.dll文件。

在项目中添加websocket-sharp.dll引用。

2、C#创建websocket服务端
Program.cs内容如下:

using System;
using WebSocketSharp;
using WebSocketSharp.Server;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            var wssv = new WebSocketServer(10086);
            wssv.AddWebSocketService<ScannerHandler>("/scan");
            wssv.Start();
            if (wssv.IsListening)
            {
                Console.WriteLine("Listening on port {0}, and providing WebSocket services:", wssv.Port);
                foreach (var path in wssv.WebSocketServices.Paths)
                    Console.WriteLine("- {0}", path);
            }

            Console.WriteLine("\nPress Enter key to stop the server...");
            Console.ReadLine();

            wssv.Stop();
        }
    }

    public class ScannerHandler : WebSocketBehavior
    {
        protected override void OnMessage(MessageEventArgs e)
        {
            Console.WriteLine(e.Data);

            Send("scan success");

        }
    }
}

3、JavaScript实现websocket客户端
网页端js内容如下:

    var ws;
    function initWS() {
        ws = new WebSocket("ws://127.0.0.1:10086/scan");
        ws.onopen = function () {
            console.log("Openened connection to websocket");

        };
        ws.onclose = function () {
            console.log("Close connection to websocket");
            // 断线重连
            initWS();
        }

        ws.onmessage = function (e) {
            alert(e.data)
        }
    }
    
    initWS();
    function scan() {
        ws && ws.send('scan');
    }

如上所述,即可完成网页与C#应用之间的websocket交互。

C#
最后修改于:2023年04月16日 01:34

添加新评论