javascript - 无法使用 socket.io 发送发布请求
问题描述
在这里,我将数据从套接字客户端发送到套接字服务器,并在收到请求后必须发送到节点 api
**问题是我在调用下面的套接字服务器时得到空**是我的代码
套接字客户端
socket.connect();
socket.emit("posreq",JSON.stringify({ "title": "data"}));
套接字服务器
var http = require('http'),
io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io')
request = require('request'),
cors = require('cors'),
server = http.createServer(function (req, res) {
// your normal server code
res.writeHead(200, {
'Content-Type': 'application/json'
});
res.end('Hello world');
});
server.listen(4000);
// socket.io
var socket = io.listen(server);
socket.on('connection', function (client) {
// new client is here!
client.on('posreq', function (postdata) {
request.post("http://localhost:3000/book", {
body: postdata
}, function (res) {
console.log(res);
client.send("post req called",postdata);
});
});
client.on('disconnect', function () {
console.log('connection closed');
});
});
节点接口
const express = require('express')
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express()
const port = 3000
let books = [{
"title": "Eloquent JavaScript, Second Edition",
}];
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/book', (req, res) => {
const book = req.body;
// output the book to the console for debugging
console.log(book);
// books.push(book);
res.json('Book is added to the database');
});
我试过但无法理解问题注:如何将 Socket 服务器转换为表达 js 代码
解决方案
据我了解,您愿意使用 express 而不是 HTTP,这将解决您的问题。在下面的代码中,我使用了 express 和 HTTP。试试下面的代码
const express=require("express")
const app=express()
const server=require("http").createServer(app)
const socket=require("socket.io")(server)
server.listen(4000,()=>console.log(`Listening to port 4000`))
socket.on('connection', function (client) {
client.on('posreq', function (postdata) {
request.post("http://localhost:3000/book", {
body: postdata
}, function (res) {
console.log(res);
client.send("post req called",postdata);
});
});
client.on('disconnect', function () {
console.log('connection closed');
});
});
推荐阅读
- android - 从 url 方案启动 Android 应用程序非常慢
- django - 是否可以从从另一个模型派生的列表列表中创建多个模型实例?
- angular - 为 @azure/msal-angular 添加导入时,Angular 应用程序变为空白
- c++ - C++ 变量数组
- amazon-web-services - API Gateway Websockets - 处理 10 分钟空闲连接超时
- ios - Swift:在串口监视器上接收来自服务器的 UDP 数据包,但不在 ios 应用程序中
- html - div不会填充父div
- excel - 按值除列
- sql - 我的程序有什么问题,我的程序中的数据有误
- c++ - 关于 linear_congruential_engine::min() 的问题