ws
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import axios from 'axios'
|
||||
|
||||
export default defineEventHandler(async event => {
|
||||
|
||||
// 获取任务列表的状态进度(普通用户只能看到自己的)
|
||||
|
25
server/api/sendmessage.ts
Normal file
25
server/api/sendmessage.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
console.log("Sendingmessage~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
|
||||
//if (event.node.req.socket) {
|
||||
// console.log("Creating websocket server")
|
||||
// event.node.req.socket.on("upgrade", function (request, socket, head) {
|
||||
// console.log("Upgrading")
|
||||
// })
|
||||
// event.node.req.socket.on("connection", function (socket) {
|
||||
// console.log("Connection")
|
||||
// socket.on("message", function (message: any) {
|
||||
// console.log("MessageA", message)
|
||||
// })
|
||||
// })
|
||||
// event.node.req.socket.on("message", function (message: any) {
|
||||
// console.log("MessageB", message)
|
||||
// })
|
||||
// event.node.req.socket.on("close", function (message: any) {
|
||||
// console.log("close", message)
|
||||
// })
|
||||
// event.node.req.socket.on("error", function (message: any) {
|
||||
// console.log("error", message)
|
||||
// })
|
||||
//}
|
||||
return { message:'2333' }
|
||||
})
|
52
server/middleware/socket.ts
Normal file
52
server/middleware/socket.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import WebSocket, { WebSocketServer } from 'ws'
|
||||
|
||||
type Client = {
|
||||
id: string
|
||||
send: (message: string) => void
|
||||
readyState: number
|
||||
}
|
||||
|
||||
declare global {
|
||||
var wss: WebSocketServer
|
||||
var clients: Client[]
|
||||
}
|
||||
|
||||
let wss: WebSocketServer
|
||||
let clients: Client[] = []
|
||||
|
||||
export default defineEventHandler((event) => {
|
||||
if (!global.wss) {
|
||||
console.log("Creating websocket server")
|
||||
wss = new WebSocketServer({ server: event.node.res.socket?.server })
|
||||
wss.on("connection", function (socket) {
|
||||
console.log("Client connected")
|
||||
socket.send("connecte")
|
||||
socket.on("message", function (message) {
|
||||
wss.clients.forEach(function (client) {
|
||||
console.log("Client", client)
|
||||
client.send('message')
|
||||
if (client == socket && client.readyState === WebSocket.OPEN) {
|
||||
clients.push({
|
||||
id: message.toString(),
|
||||
send: (data: string) => client.send(data),
|
||||
readyState: client.readyState,
|
||||
})
|
||||
global.clients = clients
|
||||
}
|
||||
})
|
||||
})
|
||||
socket.on("close", function () {
|
||||
clients = clients.filter((client) => client.readyState !== WebSocket.CLOSED)
|
||||
global.clients = clients
|
||||
console.log("Client disconnected")
|
||||
})
|
||||
socket.on("error", function (error) {
|
||||
console.log("Error", error)
|
||||
})
|
||||
socket.on("pong", function (data) {
|
||||
console.log("Pong", data)
|
||||
})
|
||||
global.wss = wss
|
||||
})
|
||||
}
|
||||
})
|
Reference in New Issue
Block a user