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交互。