Javascript 在终端上运行client socket.io

Javascript 在终端上运行client socket.io,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在搜索是否有办法在终端上运行node.js&socket.io客户端。我的目标是客户端和服务器都在终端上运行。它在网页中工作,但在终端中不工作,有什么想法吗?您可以使用PhantomJS在终端上运行无头浏览器,并在页面中将socket.io客户端的JavaScript加载到PhantomJS。从节点进程简单使用socket.io-client 使用socket.io和readline的基于终端的聊天应用程序 服务器: var app = require('express')(); var h

我正在搜索是否有办法在终端上运行node.js&socket.io客户端。我的目标是客户端和服务器都在终端上运行。它在网页中工作,但在终端中不工作,有什么想法吗?

您可以使用PhantomJS在终端上运行无头浏览器,并在页面中将socket.io客户端的JavaScript加载到PhantomJS。

从节点进程简单使用socket.io-client 使用socket.io和readline的基于终端的聊天应用程序

服务器:

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

io.on('connection', (socket) => {
    console.log('a user connected');
    
    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
    
    let eventName = 'simple chat message';
    
    let broadcast = (msg) => socket.broadcast.emit(eventName, msg);
    
    socket.on(eventName, (msg, ackFn) => {
        console.log('message: ' + msg);
        // broadcast to other clients after 1.5 seconds
        setTimeout(broadcast, 1500, msg);
    });
});

http.listen(3000, () => {
    console.log('listening on *:3000');
});
const io = require("socket.io-client");
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin,  output: process.stdout });

rl.question('What\'s your name ? ', (name) => {
    const socket = io('http://localhost:3000');

    const sendMsg = () => {
        rl.question('> ', (reply) => {
            console.log(`Sending message: ${reply}`);
            socket.emit('simple chat message', `${name} says ${reply}`);
            sendMsg();
        });
    }

    socket.on('connect', () => {
        console.log('Sucessfully connected to server.');
        sendMsg();
    });

    socket.on('simple chat message', (message) => {
        console.log(message);
    });

    socket.on('disconnect', () => {
        console.log('Connection lost...')
    }); 
    
});
服务器在上打开连接http://localhost:3000
从客户端接收消息并广播到其他客户端

客户端:

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

io.on('connection', (socket) => {
    console.log('a user connected');
    
    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
    
    let eventName = 'simple chat message';
    
    let broadcast = (msg) => socket.broadcast.emit(eventName, msg);
    
    socket.on(eventName, (msg, ackFn) => {
        console.log('message: ' + msg);
        // broadcast to other clients after 1.5 seconds
        setTimeout(broadcast, 1500, msg);
    });
});

http.listen(3000, () => {
    console.log('listening on *:3000');
});
const io = require("socket.io-client");
const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin,  output: process.stdout });

rl.question('What\'s your name ? ', (name) => {
    const socket = io('http://localhost:3000');

    const sendMsg = () => {
        rl.question('> ', (reply) => {
            console.log(`Sending message: ${reply}`);
            socket.emit('simple chat message', `${name} says ${reply}`);
            sendMsg();
        });
    }

    socket.on('connect', () => {
        console.log('Sucessfully connected to server.');
        sendMsg();
    });

    socket.on('simple chat message', (message) => {
        console.log(message);
    });

    socket.on('disconnect', () => {
        console.log('Connection lost...')
    }); 
    
});
使用
rl.question()
从终端读取文本,并使用
socket.emit()

递归调用send msg()从终端读取文本并将其发送到服务器
socket.on()
用于接收来自其他客户端的消息


欢迎来到StackOverflow。虽然这段代码可以解决这个问题,但如何以及为什么解决这个问题将真正有助于提高您的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请在回答中添加解释,并说明适用的限制和假设。