0
這裏是我的代碼:Socket.IO客戶端無法發送握手參數
var socket = require('socket.io-client')('http://127.0.0.1:3000/printers', {
query: "shop=" + "123456",
transports: ["websocket"]
});
如果我刪除的查詢,我可以連接到插座。我錯在哪裏?
這裏是我的代碼:Socket.IO客戶端無法發送握手參數
var socket = require('socket.io-client')('http://127.0.0.1:3000/printers', {
query: "shop=" + "123456",
transports: ["websocket"]
});
如果我刪除的查詢,我可以連接到插座。我錯在哪裏?
您的客戶端代碼似乎沒有任何問題。我可以通過複製和粘貼代碼進行連接。
我懷疑問題出在你的服務器端代碼中。這裏是我與你的客戶端代碼中使用的例子:
var http = require('http');
var io = require('socket.io');
var server = http.createServer(function(req,res){
res.writeHead(200);
res.end('Hello, World!\n');
});
server.listen(80);
var socket = io.listen(server);
socket.use(function(socket, next){
console.log("Query: ", socket.handshake.query);
if (socket.handshake.query.shop == '123456') {
next();
}
next(new Error('You cannot use that shop'));
});
socket.on('connection', function(client) {
console.log('New Connection');
});
我能夠獲得在「socket.use」功能查詢數據。如果我不調用next()函數,客戶端將永遠不會收到服務器已收到響應並已連接的消息。
我建議檢查此thread中使用的示例。
如果這不能解決您的問題,可否請您發佈更多的代碼。 –
我發現問題是關於最新版本的Socket.IO客戶端。我降級到1.4.7版本,它的工作。 – Burak