是否有可能发送一个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。
版本信息:
你可以这样写一个简单的客户端(让我们把它命名为不带扩展名的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
你怎么看? ;)
我能够通过执行以下操作来解决此问题:
在您的服务器中创建一个新的端点
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"); });
使用curl发送数据
curl --noproxy localhost, -X POST --data "data=testControl,loadModels,start," http://localhost:8081/sendSocketMessage