nodejs开发后端 websocket前后端代码示例

websocket

后端

依赖
npm install ws --save
代码示例

创建websocket文件夹,创建test.js测试文件

//创建一个WebSocket服务器,在10000端口启动
const WebSocket = require("ws");
const server = new WebSocket.Server({ port: 10000, path: "/ws" });
server.on("connection", (ws) => {
	console.log("Client connected");// 链接成功
	ws.on("message", (message) => {
		console.log(`Received message: ${message}`);//接收前端发来的消息
	});
	let data = 0;
	setInterval(() => {
		if (data == 100) {
			data = 0;
		}
		ws.send(`The current time is ${new Date().toLocaleTimeString()}`);//给前端发送消息
		data++;
	}, 1000);
	ws.on("close", () => {
		console.log("Client disconnected");// 监听关闭后回调
	});
});
使用

在bin/www里面插入require("../websockets/test");代码,调用websocket

前端

代码实例
<template>
	<div>
		<span>{{ dataMessage }}</span>
		<input type="text" v-model="message" />
		<div v-if="socket?.readyState === OPEN">
			<el-button type="primary" size="default" @click="sendMessage">
				发送
			</el-button>
			<el-button size="default" @click="closeSocket">关闭</el-button>
		</div>
		<div v-else>
			<el-button size="default" @click="connection">链接</el-button>
		</div>
	</div>
</template>

<script setup>
import { ElMessage } from "element-plus";
import { ref, onUnmounted, onMounted } from "vue";
const OPEN = WebSocket.OPEN;
const socket = ref(null);
const dataMessage = ref("");
const message = ref("");
const sendMessage = () => {
	socket.value.send(message.value);
};
const closeSocket = () => {
	socket.value.close();
	socket.value = null;
	dataMessage.value = "";
	ElMessage.success("连接已关闭");
};
const connection = () => {
	socket.value = new WebSocket("/socket/ws");
	socket.value.onopen = () => {
		ElMessage.success("连接成功");
	};
	socket.value.onmessage = (event) => {
		// console.log(event.data);
		dataMessage.value = event.data;
	};
};
onMounted(() => {
	connection();
});
onUnmounted(() => {
	closeSocket();
});
</script>

<style lang="scss" scoped></style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值