uni-app里使用webscoket

实现思路和vue中是一样的。如果想看思路可以看这篇文章:websocket

直接上可以运行的代码:

一、后端nodeJS代码:

1、新建项目文件夹

2、初始化项目:

npm init -y

3、项目里安装ws

npm i ws --save

4、nodeJS代码:

chat.js

const WsServer = require("ws").Server;// 创建webscoket的服务器对象
const server = new WsServer({ port: 9000 });// 绑定connection事件(当有浏览器端连接时,会触发)let allClient = []; //保存着所有的客户端server.on("connection", (client) => {console.log("有人连接了");// 保存连接的客户端allClient.push(client);console.log("allClient.length", allClient.length);// 给所有客户端发送人数:sendCount();// 给当前客户端对象绑定message事件(当前该客户端给服务器发送消息时,触发client.on("message", (str) => {console.log("有人发了消息",str);// 把收到的消息转发给其它客户端sendMsg(client,str);});client.on("close", () => {sendMsg(client,"有人退出了");allClient = allClient.filter((item) => item != client);sendCount();});
});
// 发送消息
function sendMsg(client,content) {allClient.forEach((item) => {if (item != client) {item.send(JSON.stringify({status: "msg",content,}));}});
}// 发送人数
function sendCount() {allClient.forEach((item) => {item.send(JSON.stringify({status: "count",count: allClient.length,}));});
}

5、运行后端项目:

nodemon chat

二、前端uni-app代码

1、uni-app代码

<template><view><view>聊天:在线人数:{{count}}</view><view class="chat-box" v-html="allmsg"></view><input v-model="msg" /><button @click="sendMsg">发送</button><button @click="exitChat">退出聊天</button></view>
</template><script>export default {data() {return {allmsg: "",msg: "",count: 0}},onLoad() {const socketTask = uni.connectSocket({url: "ws://127.0.0.1:9000/",success() {}});console.log("socketTask", socketTask);uni.onSocketOpen(() => {console.log("服务器已经打开链接");// ws.send("大家好,我是新来的");uni.sendSocketMessage({data: "大家好,我是通过uni来的"})})uni.onSocketMessage((res) => {console.log('收到服务器内容:' + res.data);// this.allmsg += `<view>${res.data}</view>`;const obj = JSON.parse(res.data);if (obj.status == "msg") {console.log("typeof obj.content", typeof obj.content);console.log("obj.content", obj.content);this.allmsg += `<view>${this.blobToStr(obj.content.data)}</view>`;} else if (obj.status === "count") {console.log("obj.count", obj.count);this.count = obj.count;}})},methods: {exitChat(){uni.closeSocket();},blobToStr(data) {var enc = new TextDecoder("utf-8");var arr = new Uint8Array(data);return enc.decode(arr)},sendMsg() {uni.sendSocketMessage({data: this.msg})}}}
</script><style scoped>.chat-box {width: 100%;height: 800rpx;border: 1px solid red;}
</style>

2、运行项目,界面如下:

解释:当打开前端页面时,后端的socket会自动连接上

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619248.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

奥园地产惠州奥园誉博府提前交付 匠心品质备受认可

一直以来&#xff0c;奥园地产的交付工作都是备受关注的&#xff0c;一方面&#xff0c;是交付的时间非常准时&#xff0c;让业主充满期待&#xff1b;另一方面&#xff0c;是交付的品质一直有保障&#xff0c;让业主更加安心。此次奥园地产惠州奥园誉博府已经是第二次交付了&a…

首创置业“中国之家-和园”将在巴黎开工奠基

中新网1月15日电 不久的将来&#xff0c;巴黎国际大学城将迎来第41座由中国开发商打造的特色建筑。在日前的第二届“大师之路-中法音乐节”暨和园奠基仪式新闻发布会上&#xff0c;首创置业宣布“中国之家-和园”将在巴黎国际大学城开工奠基。 据悉&#xff0c;巴黎国际大学城已…

明喆冲刺深交所:拟募资14亿 高海清家族3年分红超7亿

雷递网 雷建平 6月28日 明喆集团股份有限公司&#xff08;简称&#xff1a;“明喆集团”&#xff09;日前递交招股书&#xff0c;准备在深交所主板上市。 明喆集团计划募资14亿元&#xff0c;其中&#xff0c;3.6亿元用于营销网络及品牌建设项目&#xff0c;3.08亿元用于信息化…

康鹏科技将于12月16日上会:曾在纽交所上市,由杨建华家族控股

近日&#xff0c;上海康鹏科技股份有限公司&#xff08;下称“康鹏科技”&#xff09;在上海证券交易所递交招股书&#xff08;上会稿&#xff09;&#xff0c;准备在科创板上市。据贝多财经了解&#xff0c;康鹏科技将于2022年12月16日接受科创板上市委的现场审议。 根据公开信…

雅居乐陈卓林择址置业热土,耀启一城精彩

这个时代&#xff0c;城市的土地资源及生态人文属性&#xff0c;因不可再生而显得弥足珍贵。建筑可以复制&#xff0c;唯有资源难以再造&#xff0c;花溪正凭借其出色的宜居属性&#xff0c;成为贵阳理想的置业热土。在花溪区域发展的历程中&#xff0c;除最早入驻花溪的一批房…

赋能房地产企业并购

我叫徐文&#xff0c;目前是在一家大型房地产公司的管理层就职。近几年来&#xff0c;公司业绩可观&#xff0c;所以在几次高层会议讨论后&#xff0c;公司内部最终决定对其他中小企业进行兼并收购以扩大规模。而我&#xff0c;正是这项并购的负责人。 作为买方&#xff0c;我们…

Oracle组织架构

组织架构 &#xff08;一&#xff09;业务组&#xff08;BG&#xff09; &#xff08;二&#xff09;法律实体&#xff08;LE&#xff09; &#xff08;三&#xff09;业务实体&#xff08;OU&#xff09; &#xff08;四&#xff09;库存组织&#xff08;INV&#xff09; …

金源高端IPO被终止:曾拟募资7.5亿 儒杉资产与溧阳产投是股东

雷递网 雷建平 6月26日报道 江苏金源高端装备股份有限公司&#xff08;简称&#xff1a;“金源高端”&#xff09;日前在深交所创业板的IPO被终止。 金源高端计划募资7.5亿元&#xff0c;其中&#xff0c;5.5亿元用于高速重载齿轮零部件精密加工项目&#xff0c;5000万元用于研…

天宇优配|股权融资“松绑” 多家房企透露将有所动作

11月28日&#xff0c;证监会新闻发言人就资本商场支持房地产商场平稳健康发展答记者问时表明&#xff0c;证监会决定在股权融资方面调整优化五项办法&#xff0c;包含恢复涉房上市公司并购重组及配套融资&#xff1b;恢复上市房企和涉房上市公司再融资&#xff1b;调整完善房地…

嘉创房地产拟以介绍方式在港交所上市,期内营收、净利润规模可观

3月31日&#xff0c;嘉创房地产控股有限公司&#xff08;下称“嘉创房地产”或“嘉创地产”&#xff09;在港交所递交上市申请材料&#xff0c;拟以介绍方式在香港主板挂牌上市。据贝多财经了解&#xff0c;嘉创房地产分拆自港交所上市公司嘉利国际&#xff08;HK:01050&#x…

STL-常用容器-queue 容器(队列)

1 queue 基本概念 概念&#xff1a;Queue是一种先进先出(First In First Out,FIFO)的数据结构&#xff0c;它有两个出口。 队列容器允许从一端新增元素&#xff0c;从另一端移除元素 队列中只有队头和队尾才可以被外界使用&#xff0c;因此队列不允许有遍历行为 队列中进数据…

JS-this知识点、面试题

一、this指向什么 1.简介 2.规则一&#xff1a;默认绑定 3.规则二&#xff1a;隐式绑定 4.规则四&#xff1a;new绑定 5.规则三&#xff1a;显式绑定 call、apply、bind 6.内置函数的绑定 7.规则优先级 8.this规则之外--es6剪头函数 9.ES6剪头函数this 二、This面试题 面试题…

01.基于自定义MVC架构的用户登录与首页展示实现 — OA项目实践

目录 本章节目标&#xff1a;完成OA项目用户登录及首页展示 一.用户登录 User.java UserDao.java IUserDao.java UserAction.java login.jsp&#xff08;登录界面&#xff09; userManage.jsp (数据绑定&#xff0c;修改&#xff0c;删除) userEdit.jsp&#xff08;用…

Python WEB框架之FastAPI

Python WEB框架之FastAPI 今天想记录一下最近项目上一直在用的Python框架——FastAPI。 个人认为&#xff0c;FastAPI是我目前接触到的Python最好用的WEB框架&#xff0c;没有之一。 之前也使用过像Django、Flask等框架&#xff0c;但是Django就用起来太重了&#xff0c;各种…

苹果手机怎么查看历史足迹

1.解锁手机&#xff0c;点击设置&#xff0c;如下图。 2.进入到设置界面&#xff0c;点击【隐私】选项&#xff0c;如下图。 3.进入到隐私界面&#xff0c;点击【定位服务】&#xff0c;如下图。 4.进入定位服务界面&#xff0c;点击【系统服务】&#xff0c;如下图。 5.在打开…

苹果uwb定位技术

昨天的文章简单说明了手机定位的技术&#xff0c;文章写的比较简单&#xff0c;但是阅读量却还可以&#xff0c;这篇文章转一个uwb定位技术的文章&#xff0c;让更多的人了解这项技术。 相关阅读&#xff1a; 手机是怎么确定位置信息的&#xff1f; 载波和LoRa #前言 关于昨天的…

常见手机定位方式浅谈

引言 前段时间在知乎上回答了一个关于手机定位相关的问题&#xff0c;被一个知友问到“加一个人微信聊天之后&#xff0c;收到了人家的一个视频&#xff0c;随后也把这个人及他发的视频都删除了&#xff0c;几天后在网吧上网&#xff0c;被别人定位到了&#xff0c;勒索了一笔钱…

苹果手机如何显示定位服务器地址,iOS8定位服务在哪?苹果iPhone6/Plus开启或关闭定位方法图文介绍...

以下是具体的iPhone6/Plus开启或关闭定位方法&#xff0c;适合所有iOS8系统的iPhone设备。 iOS8定位服务在哪&#xff1f; 定位服务关系用户隐私方面的东西&#xff0c;因此iOS8定位服务在iOS8设置中的“隐私”设置中&#xff0c;大家可以在下面的iOS8开启或者关闭定位服务教程…

小程序定位苹果手机可以,但是安装手机获取不到定位

1.确认是否开通定位权限 如果还没有权限&#xff0c;就去申请&#xff1a;申请时 注明场景&#xff0c;多上传几张 那个位置需要上传的照片 更容易通过本人申请场景(参考)&#xff1a;需要获取工人拍照验收位置照片注明定位位置时间&#xff0c;验证工人师傅在现场 审核是否通…

vscode 对模型train、detect脚本进行Debug时配置参数

我们训练yolov5代码时&#xff0c;一般会配置一些参数&#xff0c;比如模型权重文件--weights, 模型的配置文件--cfg, 以及训练的数据--data, 对应的训练脚本为: 训练train python train.py -- weights ./yolov5s.pt --cfg models\yolov5s.yaml --data ./data/coco128.yaml…