当前位置: 首页 > news >正文

netcore vue socket.io

netcore vue socket.io

一、后端

  1. 创建项目

    # 添加解决方案
    > dotnet new sln -n Apricot.Socket.IO# 添加 asp net core 项目
    > dotnet new web -n Apricot.Socket.IO# 将 web 项目添加至解决方案
    > dotnet sln add Apricot.Socket.IO/Apricot.Socket.IO.csproj
    
  2. 安装依赖

    >  dotnet add package SocketIOSharp --version 2.0.3
    
  3. 配置服务

    using var server = new SocketIOServer(new SocketIOServerOption(9001));Console.WriteLine("Listening on " + server.Option.Port);// Handle client connectionsserver.OnConnection((socket) =>{Console.WriteLine("Client connected!");// on "readFile" eventsocket.On("readFile", async (JToken[] data) =>{Console.WriteLine($"start: {DateTime.Now:mm:ss.fff}");using var fileStream = System.IO.File.OpenRead("C:\\Users\\Administrator\\Desktop\\2fdda3cc7cd98d1001e9f6a7b36eaf0e7bec54e73a51.jpg");var memeoryStream = new MemoryStream();await fileStream.CopyToAsync(memeoryStream);var buffer = memeoryStream.ToArray();Console.WriteLine($"emit: {DateTime.Now:mm:ss.fff}");socket.Emit("readfile", new{Code = 200,Data = Convert.ToBase64String(buffer)});Console.WriteLine($"end: {DateTime.Now:mm:ss.fff}");});// on "error" eventsocket.On("error", () =>{throw new Exception("Test exception from server.");});// on "disconnect" eventsocket.On(SocketIOEvent.DISCONNECT, () =>{Console.WriteLine("Client disconnected!");});// Emit "echo" event to clientsocket.Emit("echo", new byte[] { 0, 1, 2, 3, 4, 5 });});// Start the serverserver.Start();Console.WriteLine("Input /exit to exit program.");string line;while (!(line = Console.ReadLine())?.Trim()?.ToLower()?.Equals("/exit") ?? false){server.Emit("echo", line);}Console.WriteLine("Press enter to continue...");Console.Read();
    
  4. 运行服务

    > dotnet run Apricot.Socket.IO/Apricot.Socket.IO.csproj
    
  5. 运行截图

    image

  6. 参考

    • SocketIOSharp

二、前端

  1. 创建项目
    > vue create apricot-socket.io
    
  2. 安装依赖
    > npm install socket.io-client@2.3.0 --save
    
  3. 编写代码
    <template><div class="hello"><label for="socket.io-client">socket.io-client</label>:<inputname="socket.io-client"type="button"value="socket.io-client"v-on:click="client"/></div></template><script>// socket io clientvar socket = require("socket.io-client")("http://localhost:9001/");const formatter = new Intl.DateTimeFormat("zh-CN", {year: "numeric",month: "long",day: "2-digit",hour: "2-digit",minute: "2-digit",second: "2-digit",fractionalSecondDigits: 3, // 包含毫秒hour12: false, // 使用24小时制});export default {name: "HelloWorld",components: {},computed: {},created() {// socket client connectionsocket.on("connection", function () {console.log("connected!");socket.emit("input", "asdasdg");});// socket client errorsocket.on("error", function (error) {console.log("error!"), error;socket.emit("error", "asdasdg");});// socket client echosocket.on("echo", function (data) {console.log("echo : " + data);});// socket client disconnectsocket.on("disconnect", function () {console.log("disconnected!");});// socket client readfilesocket.on("readfile", function (data) {var now = new Date();console.log("received:", formatter.format(now));console.log("echo : " + JSON.stringify(data));});console.log("input /exit to exit program.");// client to serversocket.connect();},props: {msg: String,formatter: Intl.DateTimeFormat,},methods: {// eslint-disable-next-lineclient(event) {var now = new Date();console.log("send:", formatter.format(now));socket.emit("readFile", { fileName: "123.txt" });},},};</script><!-- Add "scoped" attribute to limit CSS to this component only --><style scoped>h3 {margin: 40px 0 0;}ul {list-style-type: none;padding: 0;}li {display: inline-block;margin: 0 10px;}a {color: #42b983;}</style>
  4. 发送数据
    image
http://www.jsqmd.com/news/24877/

相关文章:

  • Docker安装DPanel(docker容器管理工具)
  • 2025 年最佳AI智能企业知识管理工具推荐
  • 制造业设备管理的三个坑,90% 的工厂都踩过
  • 【硬件测试】基于FPGA的8PSK+帧同步系统开发与硬件片内测试,包含高斯信道,误码统计,可设置SNR
  • 移动端性能监控探索:可观测 Android 采集探针架构与实现
  • 2025年建站AI工具TOP10盘点:从ChatGPT到Lynx的智能革命
  • KPI绩效考核系统软件:让绩效管理由“难”变“易”的核心密钥
  • CompleteMaintenance点检提交反复超时,日志显示执行中断
  • ICPC Nanjing Regional (部分题题解)
  • 为何AI反诈骗防护比以往任何时候都更重要
  • 2025 年最受欢迎的 50 款免费 AI 工具,无免费增值、无付费计划或无每日信用额度限制
  • prometheus监控体系搭建
  • 分布式锁巅峰对决:Redis RedLock vs ZooKeeper临时节点——Redission看门狗如何破解续期困局 - 教程
  • Elasticsearch Hot Threads
  • 习题-良序集
  • 2025年北京无人机执照培训机构推荐榜,caac无人机执照培训机构/caac无人机执照培训基地/聚焦企业服务品质与专业培训能力深度剖析
  • MySQL 数据加密整改文档(TDE + 字段加密 + 密码哈希)
  • KeyShot许可分析软件推荐
  • P6147 [USACO20FEB] Delegation G 题解
  • AI元人文:大语言模型、世界模型与AI元人文模型的文明三重奏
  • 6G通讯技术的应用场景和关键技术
  • 全球1-18级的瓦片数量
  • 2025年U型科氏质量流量计最新推荐榜:微弯型科氏质量流量计/直管型科氏质量流量计/科氏质量流量计助力产业智能化升级
  • 2025年火锅底料工厂厂家权威推荐榜单:袋装火锅底料/餐饮火锅底料/企业火锅底料源头厂家精选
  • 收藏版:Phinx 数据库迁移完全指南
  • react打包优化和配备优化都有哪些?
  • 2025年港口动态沙盘模型厂家 权威推荐榜单:物流教学实训沙盘/港口演示实训模型/智能港口实训模型源头厂家精选
  • 2025年电力机动绞磨厂家权威推荐榜单:快速机动绞磨/柴油机动绞磨机/机动绞磨机源头厂家精选
  • 数据库国产化替换后,Oracle还有没有学习的价值?
  • 怎么自己架设魔域服务器?魔域服务器架设教程