我如何发送消息到我的socket.io websocket从命令行在Linux中?

是否有可能发送一个socket.io消息到我的本地主机服务器 (节点)使用命令行在Linux? 我不知道这是否可能…从稀缺的谷歌结果,我猜这是不可能的或复杂的…

我的socket.io代码如下所示:

var io = require('socket.io'); var socket; socket = io.listen(server, {log: false}); server.listen(8081); socket.sockets.on('connection', function (socket) { socket.on('message', function (data) { console.log("Received socket message from GUI: "+data); } }); 

我想发送一个socket.io消息,看起来像这样: "testControl,loadModels,start" ,然后触发一些服务器端的逻辑。 这可能吗?

我遇到了看起来很有前途的websocketd,但是它在linux中创build了一个websocket,我只想发送一个消息给现有的 websocket。

版本信息:

  • 节点版本:v0.10.42
  • Socket.IO版本:1.3.4
  • Express版本:4.12.0

你可以这样写一个简单的客户端(让我们把它命名为不带扩展名的client ):

 #!/usr/bin/env node const socket = require('socket.io-client')('http://localhost:3000'); const someDelay = 10; socket.on('connect', function () { console.log('connected...'); if (process.argv[2] && process.argv[3]) { console.log('sending ' + process.argv[2] + ': ' + process.argv[3]); socket.emit(process.argv[2], process.argv[3]); setTimeout(() => { process.exit(0); }, someDelay); } else { console.log('usage: ./client.js <event> <data>'); process.exit(1); } }); 

有一个非常基本的package.json

 { "name": "client", "version": "0.0.1", "private": true, "scripts": { "start": "client" }, "dependencies": { "socket.io-client": "^1.4.6" } } 

然后运行npm install ,给予client执行权限,你可以运行它(例如) ./client message testControl

你怎么看? ;)

我能够通过执行以下操作来解决此问题:

  1. 在您的服务器中创建一个新的端点

     app.post('/sendSocketMessage', function(req, res){ console.log("Request is "+JSON.stringify(req.body)); socketManager.parse(req.body); //send message directly to your socket parser res.status(200).send("OK"); }); 
  2. 使用curl发送数据

     curl --noproxy localhost, -X POST --data "data=testControl,loadModels,start," http://localhost:8081/sendSocketMessage