【问题标题】:How to display images with some buttons?如何用一些按钮显示图像?
【发布时间】:2019-09-01 12:38:29
【问题描述】:

我想创建一个页面(在我的计算机上),当您在本地网络中单击手机上另一个页面上的某些按钮时,图像会发生变化。为了解释这个项目,我希望用户可以选择一个词(所以,在电话上)并且在计算机页面上出现一个污点,所以它会创建一个阴影超时。 (这很重要,因为这意味着图像会自行叠加)。 我是编程新手,所以这对我来说是一项非常艰苦的工作。

但是,我现在可以使用 socket.io 和 node.js 通过本地网络在我的手机和我的计算机之间进行通信。我也可以在一个简单的 html 页面中制作我想要的东西。但我绝对不知道如何用 socket.io 做同样的事情。这就是为什么我需要你的帮助。因为我想要两个不同的页面并进行交流,我想我知道我必须朝哪个方向前进,但真正的问题是显示图像的按钮。 编辑:此外,我希望图像淡出

我的 server.js 文件

io.socket.on('connection', function(socket) {
      console.log('Client connected...');
      //when the server receives clicked message, do     this
    socket.on('clicked', function(data) {
          clickCount++;
         //send a message to ALL connected clients
      socket.broadcast.emit('buttonUpdate', clickCount);
    });
});

和 index.html

<p id="buttonCount">The button has been clicked 0 times.</p>
<button onclick="buttonClicked()">Click me</button>
<script src="socket.io/socket.io.js"></script>
<script>
             var socket = io.connect();

             function buttonClicked(){
               socket.emit('clicked');
             }

             //when we receive buttonUpdate, do this
             socket.on('buttonUpdate', function(data){
                 document.getElementById("buttonCount").innerHTML = 'The button has been clicked ' + data + ' times.';
             });
        </script>

我知道我的实际代码的重要部分在这里,即使这实际上与我想要的无关。

而在 html 语言中,我通常只使用这样的函数

".titre" ).click(function() {
  $( ".d5" ).fadeIn( 2000 );
  $( ".d4" ).fadeIn( 2000 );

谢谢

【问题讨论】:

  • 您是否翻转了文件的代码,例如 io.socket.on() 应该来自 server.js,反之亦然。按钮的数量是否在多个会话中保持不变,还是仅适用于打开页面的浏览器?
  • 抱歉不准确,但对于您评论的第一部分,没关系啊哈!我在帖子中犯了一个错误,对不起。我不太明白这个问题,我希望只有他手机上的发件人可以使用按钮。我只需要两页,一页手机,一页电脑,一个人能用就可以了。 (我觉得第二个选择还可以)

标签: javascript jquery sockets websocket socket.io


【解决方案1】:

socket.broadcast.emit() 会将事件发送给所有除了调用当前事件的客户端。

socket.emit() 只会发送给客户端。

话虽如此,您需要同时做到这两点才能接触到每个人。

io.socket.on("connection", function(socket) {
  console.log("Client connected...");

  // On emit from client with socket.emit("clicked")
  socket.on("clicked", function(data) {
    clickCount++;

    // Emit from server to client
    socket.broadcast.emit("buttonUpdate", clickCount);
    socket.emit("buttonUpdate", clickCount);
  });
});

例如,请参阅Codesandbox

  • https://6yq3738mrn.sse.codesandbox.io/ 用于只显示数字的主页。
  • https://6yq3738mrn.sse.codesandbox.io/control 用于带有按钮的控制页面。

【讨论】:

  • 0 谢谢你的回答,也许我没有正确解释我想要什么,但这是我用来学习 Javascript 和 socket.io 的代码,它看起来几乎是我想要的。但现在我想用按钮显示图像(在不同的页面中作为按钮)
  • @CyrilKimmerlin 很抱歉,但老实说,我不太了解您想要实现的目标。
  • 忘记数字,当您单击控制页面上的按钮时,我想在主页上显示图像:)。这有 10 个按钮和对应于每个按钮的 10 个图像。是不是更清楚了?
  • @CyrilKimmerlin 更新了 codesandbox 以包含类似的内容。你如何操作 DOM 还是一样的。您只需要注意如何使用 socket.io 触发您的代码。
猜你喜欢
  • 2014-04-19
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2021-10-14
  • 1970-01-01
相关资源
最近更新 更多