【发布时间】: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