簡體   English   中英

Socket.io沒有從客戶端發送到服務器

[英]Socket.io not emitting from Client to Server

我有這樣建立的服務器-客戶端連接協議:

服務器:

const app = express();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io').listen(server);
io.on('connection', function (socket) {
    "use strict";
    socket.emit('connectionSuccess', {});
    socket.emit('initmap', map.objects);

    io.on('test', function (event) {
        console.log('received client emit');
    });
});

客戶:

socket.on('connectionSuccess', function (event) {
    console.log('connection successful');
    socket.emit('test', {"test": "data"});
});

當服務器在指定的端口上運行並且用戶訪問客戶端時,將建立連接,並且客戶端控制台將輸出連接成功。

服務器能夠發出“ initmap”以將數據發送到客戶端以供讀取,但是,在連接時不能說相同的測試數據從客戶端發送回服務器。

為什么這種情況下發出的光似乎僅在服務器到客戶端之間起作用,而在客戶端到服務器之間卻不起作用?

您應該在套接字實例而不是服務器實例上偵聽test事件:

io.on('connection', function (socket) {
  ...
  socket.on('test', function (event) {    // <-- `socket.on()` instead of `io.on()`
    console.log('received client emit');
  });
});

暫無
暫無

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

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