【问题标题】:Error using node request library on socket io在套接字 io 上使用节点请求库时出错
【发布时间】:2017-05-03 08:00:38
【问题描述】:

我在我的 laravel 项目中使用 socket io,但我在 socket.js 文件中的断开事件请求时遇到了问题。

我已经调试了我的代码,错误出在请求库上。

Socket.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');

server.listen(5000);

io.on('connection', function (socket) {
    console.log("new client connected " + socket.id);

    socket.on('disconnect', function() {
        var socket_id = socket.id;
        console.log('client disconnected :C '+socket_id);

        var request = require('request');
        var url_request = 'http://example.com/play-session/close?socket_id=' + socket_id;
        request(url_request, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                console.log('session closed '+socket_id);
            }
        });
    });
});

错误:

SyntaxError: Error parsing /var/www/example.com/public_html/node_modules/aws4/package.json: Unexpected token <
    at Object.parse (native)
    at readPackage (module.js:113:52)
    at tryPackage (module.js:123:13)
    at Function.Module._findPath (module.js:190:18)
    at Function.Module._resolveFilename (module.js:336:25)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/var/www/example.com/public_html/node_modules/request/request.js:11:12)
    at Module._compile (module.js:456:26)

我不知道发生了什么。感谢所有帮助,谢谢。

更新,修复问题完成:

我用这个来解决这个问题:https://www.npmjs.com/package/request#unix-domain-sockets,使用这样的例子:

Socket.js

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var redis = require('redis');
var request = require('request');

server.listen(5000);

io.on('connection', function (socket) {
    console.log("new client connected " + socket.id);

    socket.on('disconnect', function() {
        var socket_id = socket.id;
        console.log('client disconnected :C '+socket_id);

        var url_request = 'http://example.com/play-session/close?socket_id='+socket_id;
        request.get(url_request); // this line fix it
    });
});

感谢大家的帮助。

【问题讨论】:

  • 看起来是 aws4 导致了这个问题。尝试重新安装它
  • 好的,我会尝试在我的服务器中重新安装请求库。
  • 不是request,而是aws4
  • 哈哈,好吧我试试这个
  • 不,是提出请求的方式,非常感谢您的帮助兄弟..

标签: javascript node.js laravel socket.io request


【解决方案1】:

你可以用这个来解决这个问题:https://www.npmjs.com/package/request#unix-domain-sockets,使用这样的例子:

request.get(url_request);

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2015-09-12
    • 2018-05-15
    相关资源
    最近更新 更多