簡體   English   中英

如何使用socket.io發出事件以響應事件?

[英]How to emit an event in response to an event using socket.io?

我是socket.io的新手,正在嘗試使其正常工作。 我不知道我在這里做錯了什么,因為它看起來非常簡單-但它沒有用。 我想我缺少明顯的東西。 希望其他人可以看到那是什么。

我正在設置socket.io以與節點/快速服務器一起工作。 這是我嘗試做的測試的簡化版本。

服務器:

var http = require('http');
var express = require('express');
var app = express();
var server = http.createServer(app);
var io = require('socket.io')(server);

/* socket.io test */
io.on('connection', function(socket){
  socket.on('helloServer', function(clientMessage){
    console.log("Server got 'helloServer' event");
    socket.emit('helloClient', { message : "Hi there. We got your message: " + clientMessage.message});
  });
});

客戶端具有函數callServer ,當用戶單擊UI中的按鈕時將調用該函數:

var socket = io.connect('http://localhost');

function callServer() {
  socket.emit('helloServer', { message : "Hello server!" });
}

socket.on('helloClient', function (serverMessage) {
  console.log(serverMessage.message);
});

當我運行此代碼並單擊調用callServer的按鈕時,服務器確實獲得了事件helloServer ,因為我看到控制台按預期方式記錄了該消息,但是客戶端從未收到helloClient事件。 好像socket.on響應函數中的socket.emit調用永遠不會被調用。

我究竟做錯了什么?

看來還可以。 但是,以防萬一,請以所有將數據發送到客戶端的方式檢查此答案 ,然后嘗試使用“ io.emit”(發送給所有客戶端)。 或者嘗試發送字符串而不是json對象。

我在這里嘗試過此示例,並且可以正常工作,只需復制並粘貼即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM