javascript - 套接字 IO 事件发射

标签 javascript node.js socket.io

我试图让客户端与服务器对话,但无法接收客户端发出的事件。每当客户端连接时,服务器 console.logs connected to localhost:61201 都会建立连接;但是,客户端不定期发出的 clientEvents 没有响应。

服务器.js

const port = 61201;
const ipAddress = "127.0.0.1"

var http = require('http');
var io = require('socket.io');
var server = http.createServer();
server.listen(port, ipAddress);
var socket = io.listen(server);

socket.on('connect', () => {
    console.log('connected to localhost:61201');
    socket.on('clientEvent', function (data) {
        console.log('message from the client:', data);
        socket.emit('serverEvent', "thanks server! for sending '" + data + "'");
    });
});

客户端.js

const port = 61201;
const ipAddress = "127.0.0.1";
const url = 'http://' + ipAddress + ':' + port;

var io = require('socket.io-client');

var socket = io(url);

socket.on('connect', () => {
    socket.on('serverEvent', function (data) {
        console.log('new message from the server:', data);
    });
    setInterval(function () {
        socket.emit('clientEvent', Math.random());
        console.log('message sent from the client');
    }, 3000);
});

最佳答案

您需要使用 connect 事件返回的 socket 对象。试试这个

socket.on('connect', (clientSocket) => {
    console.log('connected to localhost:61201');
    clientSocket.on('clientEvent', function (data) {
        console.log('message from the client:', data);
        clientSocket.emit('serverEvent', "thanks server! for sending '" + data + "'");
    });
});

关于javascript - 套接字 IO 事件发射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51458449/

相关文章:

javascript - 从函数-Node JS -socket.io发出事件的正确方法

php - 响应中 'Access-Control-Allow-Origin' header 的值不得为laravel-echo-server中的通配符 '*'错误

javascript - 如何使用大量 JavaScript String Replace() 来翻译页面?

javascript - Fancybox:让它在鼠标悬停/鼠标移出时工作

javascript - For 循环中的 setTimeout 问题

javascript - NodeJS 中非常基本的请求响应 Web 服务器

mysql - 如何使用 Bookshelfjs 保存一对多关系

javascript - 具有外部托管 templateUrl 的 AngularJS 组件?

node.js - expressjs,中间件回调使用的差异

javascript - 在 ejs 和 nodejs 中 POST http ://localhost:3000/socket. io/?EIO=3&transport=polling&t=NQUneY3 400(错误请求)