首页 > 其他分享 >websocket-sharp 实现websocket

websocket-sharp 实现websocket

时间:2022-12-27 16:11:30浏览次数:31  
标签:function wssv websocket log 实现 console ws sharp

第一步,使用VS创建一个应用程序

第二步,添加引用 websocket-sharp DLL文件,或者NuGet程序包中添加

第三部,创建Laputa 类

using WebSocketSharp;
using WebSocketSharp.Server;

namespace ConsoleApp1
{
    public class Laputa : WebSocketBehavior
    {
        protected override void OnMessage(MessageEventArgs e)
        {
            var msg = "I'm not available now.";
            if(e.Data == "BALUS")
            {
                msg = "I've been balused already...";
            }
            Send(msg);
        }
    }
}

第四步,Program下写上如下代码

using System;
using WebSocketSharp.Server;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var wssv = new WebSocketServer(4649);
            wssv.AddWebSocketService<Laputa>("/Laputa");

            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();
        }
    }
}

第五步,前端调用代码

<html>
<head>
    <title>websocket client</title>
    <script type="text/javascript">
        var ws;
        function startWS() {
            ws = new WebSocket("ws://127.0.0.1:4649/Laputa");
            ws.onopen = function (msg) {
                console.log("Openened connection to websocket");
            };
            ws.onmessage = function (message) {
                console.log('receive message: ' + message.data);
            };
            ws.onerror = function (error) {
                console.log('Error: ' + error.name + error.number);
            };
            ws.onclose = function () {
                console.log("Close connection to websocket");
                startWS();
            };
        }

        function sendMessage() {
            console.log('Sending a message...');
            ws.send('BALUS');
        }

        window.onbeforeunload = function () {
            ws.onclose = function () { };  // 首先关闭 WebSocket
            ws.close()
        };

        startWS();
    </script>
</head>
<body>
    <button onclick="sendMessage()">测试</button>
</body>
</html>

 

 测试成功了。

 

标签:function,wssv,websocket,log,实现,console,ws,sharp
From: https://www.cnblogs.com/wsk198726/p/17008280.html

相关文章

  • 美颜sdk中的人脸美型实现流程详解
    在之前的文章中,小编讲了许多美颜sdk的功能实现流程,有一些是热门功能,例如美白、磨皮等,但是有一个功能小编遗漏没有讲到,虽然不常提起,但是它的热度并不低,这个功能就是——“人......
  • mybatis框架学习1——实现增删改查
    前言:这个文章的定位不是实现的步骤,而是实现过程中遇到的问题。并且我写的步骤是别人的步骤的记录,算不了什么,后面对使用过程中遇到的问题以及解决的方法才是自己写的,有价值的......
  • 初步实现GoQtTemplate
    #ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>//新添加#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/......
  • LVGL视频播放界面实现方法
    1.主题LVGL视频播放界面实现方法2.问题背景使用LVGL开发且需要在UI下显示视频或者显示摄像头数据,但是不知道如何实现,要么是只显示UI,要么就只显示视频。3.具体表现可以......
  • 自研ORM框架实现工作单元模式
    平时我们使用事务,需要显示的TryCatch并且开启事务提交事务异常回滚事务三步骤,使用工作单元后则只需要Commit。1.接口定义1///<summary>2///工作单......
  • PE格式:分析IatHook并实现
    Ring3层的IATHOOK和EATHOOK其原理是通过替换IAT表中函数的原始地址从而实现Hook的,与普通的InlineHook不太一样IATHook需要充分理解PE文件的结构才能完成Hook,......
  • PE格式:手工实现IAT导入表注入劫持
    DLL注入有多种方式,今天介绍的这一种注入方式是通过修改导入表,增加一项导入DLL以及导入函数,我们知道当程序在被运行起来之前,其导入表中的导入DLL与导入函数会被递归读取加载......
  • PE格式:手工实现各种脱壳后的修复
    手工修复导入表结构实现手工修复导入表结构1.首先需要找到加壳后程序的导入表以及导入了那些函数,使用PETools工具解析导入表结构,如下。2.发现目录FOA地址为0x00000800的......
  • 【Mybatis技术专题】MybatisPlus自带强大功能之多租户插件实现原理和实战分析(3)
    ​​http://mp.baomidou.com/guide/tenant.html​​前提介绍一般的程序应用当使用者访问不同,并且进入相对应的程序页面,则会把用户相关数据传输到后台这里。在传输的时候需要......
  • Vue技术8.2姓名案例_methods实现
    <!DOCTYPEhtml>><html><head><metacharset="UTF-8"/><title>姓名案例_methods实现</title><!--引入Vue--><scripttype="text/ja......