Javascript 如何创建显示所有连接用户光标位置的页面?Node.js、ws、express

Javascript 如何创建显示所有连接用户光标位置的页面?Node.js、ws、express,javascript,node.js,express,ws,Javascript,Node.js,Express,Ws,我想创建一个简单的页面,显示所有连接用户的鼠标坐标 我甚至可以显示单个连接客户端的鼠标坐标。将鼠标坐标发送到服务器。将数据发送回。 我不知道从这里到哪里去。我正在考虑如何将来自服务器的每个响应保存为对象,然后显示该对象。我被卡住了,不知道如何解决这项任务 服务器端代码 var express = require('express') var WebSocket = require('ws') var app = express() app.listen(3000, function() {

我想创建一个简单的页面,显示所有连接用户的鼠标坐标

我甚至可以显示单个连接客户端的鼠标坐标。将鼠标坐标发送到服务器。将数据发送回。 我不知道从这里到哪里去。我正在考虑如何将来自服务器的每个响应保存为对象,然后显示该对象。我被卡住了,不知道如何解决这项任务

服务器端代码

var express = require('express')
var WebSocket = require('ws')
var app = express()

app.listen(3000, function() {
    console.log("Server started on port 3000")
})
app.use(express.static('public'))

var server = new WebSocket.Server({port: 3200})
server.on('connection', function(socket) {
    console.log("Connected, using WebSocket")
    console.log(server.clients.size)

    socket.on('message', function(msg) {
        server.clients.forEach(function each(client) {
            client.send(msg)
        })
    })
})
客户端

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app" v-on:mousemove="clientCoords">
        <p>{{displayX}}</p>
        <p>{{displayY}}</p>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

    <script>
        var app = new Vue({
            el: '#app',
            data() {
                return {
                    clientInformation: {}
                    ,
                    clientList: [

                    ],
                    clientCoord: {},
                    displayX: '',
                    displayY: '',
                    socket: new WebSocket('ws://localhost:3200')
                }
            },
            methods:{
                clientCoords(e){
                    this.clientInformation.coordX = e.clientX
                    this.clientInformation.coordY = e.clientY
                    this.socket.send(JSON.stringify(this.clientInformation))
                }
            },
            mounted() {
                this.clientList.push(this.clientInformation)
                this.socket.addEventListener('message', (msg) => {
                    this.displayX = JSON.parse(msg.data).coordX
                    this.displayY = JSON.parse(msg.data).coordY
                })
            }
        })
    </script>
    <style>
        #app {
            height: 100%;
        }
        body {
            height: 100%;
        }
        html {
            height: 100%;
        }
    </style>
</body>
</html>

文件
{{displayX}}

{{display}}

var app=新的Vue({ el:“#应用程序”, 数据(){ 返回{ 客户端信息:{} , 客户名单:[ ], 客户合作社:{}, displayX:“”, 显示:“”, 套接字:新WebSocket('ws://localhost:3200') } }, 方法:{ clientCoords(e){ this.clientInformation.coordX=e.clientX this.clientInformation.coordY=e.clientY this.socket.send(JSON.stringify(this.clientInformation)) } }, 安装的(){ this.clientList.push(this.clientInformation) this.socket.addEventListener('message',(msg)=>{ this.displayX=JSON.parse(msg.data).coordX this.display=JSON.parse(msg.data).coordY }) } }) #应用程序{ 身高:100%; } 身体{ 身高:100%; } html{ 身高:100%; }
您应该通过套接字从所有客户端发送坐标,并将坐标发送给您当前连接的所有用户。这不会向新连接的用户显示其他人鼠标的坐标,一旦其他人移动鼠标,他们的坐标会像聊天一样显示它的想法;你的客户端应用程序必须知道谁说了什么;方法是将socket.id添加到您发送的消息中。您的客户端必须在适当的数据结构(如对象,ID为键)中跟踪单独的位置,以便能够显示它们。我认为我应该为每个连接的客户端创建一个对象,并按照@Chris G的建议将它们显示为单独的对象。我希望有人能帮我找到解决方案。你应该通过套接字从所有客户端发送坐标,并将坐标发送给你当前连接的所有用户。这不会向新连接的用户显示其他人鼠标的坐标,一旦其他人移动鼠标,他们的坐标会像聊天一样显示它的想法;你的客户端应用程序必须知道谁说了什么;方法是将socket.id添加到您发送的消息中。您的客户端必须在适当的数据结构(如对象,ID为键)中跟踪单独的位置,以便能够显示它们。我认为我应该为每个连接的客户端创建一个对象,并按照@Chris G的建议将它们显示为单独的对象。我希望有人能帮我找到解决办法。