我正在尝试使用node.js和socket.io进行实时应用。正如我所看到的,服务器可以看到新用户何时连接但无法将信息返回给客户端或其他什么。这就是我在客户端的意思:
<script src="<?= base_url('assets/js/socket.io.js') ?>"></script>
<script>
var socket;
socket = io('http://***.***.***.***:3030', {query: "key=key"});
socket.on('connect', function (data) {
console.log('Client side successfully connected with APP.');
});
socket.on('error', function (err) {
console.log('Error: ' + err);
});
</script>
这是服务器端:
var app = require("express")();
var http = require("http").createServer(app);
var io = require("socket.io")(http);
http.listen(3030, function () {
globals.debug('Server is running on port: 3030', 'success');
});
io.set('authorization', function (handshakeData, accept) {
var domain = handshakeData.headers.referer.replace('http://', '').replace('https://', '').split(/[/?#]/)[0];
if ('www.****.com' == domain) {
globals.debug('New user connected', 'warning');
} else {
globals.debug('Bad site authentication data, chat will be disabled.', 'danger');
return accept('Bad site authentication data, chat will be disabled.', false);
}
});
io.use(function (sock, next) {
var handshakeData = sock.request;
var userToken = handshakeData._query.key;
console.log('The user ' + sock.id + ' has connected');
next(null, true);
});
当有人来到网站时,我希望在控制台输出中看到“新用户已连接”并且我看到它:screen shot并且用户应该在浏览器控制台输出上看到:“客户端成功连接到APP“。但我没有表现出来。此外,我尝试向用户发送数据,但它也不起作用。我看不出任何错误或其他什么。这不是我第一次使用套接字,而是第一次遇到问题。也许有任何错误报告方法来处理错误或什么?此外,我无法在io.use(....)
方法
答案 0 :(得分:1)
解决方法是在验证后立即传递“OK”符号以执行下一个方法:
io.set('authorization',function(handshakeData,accept){ var domain = handshakeData.headers.referer.replace('http://','')。replace('https://','')。split(/ [/?#] /)[0]; < / p>
if ('www.****.com' == domain) {
globals.debug('New user connected', 'warning');
accept(null, true);
} else {
globals.debug('Bad site authentication data, chat will be disabled.', 'danger');
return accept('Bad site authentication data, chat will be disabled.', false);
}
});