我正在使用Express.IO和This iOS Client尝试创建一个基本套接字示例,但我似乎无法连接。
我尝试了在谷歌上可能找到的所有内容,但每当我的客户端尝试连接时,我都会收到以下错误:
2013-08-12 14:48:42.628 SocketIOTest[59835:c07] ERROR: handshake failed ... Could not connect to the server.
2013-08-12 14:48:42.628 SocketIOTest[59835:c07] OnError: Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo=0x7594570 {NSErrorFailingURLStringKey=http://localhost:7076/socket.io/1/?t=16807, NSErrorFailingURLKey=http://localhost:7076/socket.io/1/?t=16807, NSLocalizedDescription=Could not connect to the server., NSUnderlyingError=0x10967bb0 "Could not connect to the server."}
当我在浏览器中转到http://localhost:7076/socket.io/1/?t=16807
时,我得到了以下回复:
ttIwyz7Tw6uFjp00WceI:60:60:websocket,htmlfile,xhr-polling,jsonp-polling
但由于某些原因,在使用标头工具进行检查时,它确实会返回HTTP 500错误。我真的不确定为什么。
这是我的节点代码:
#!/usr/bin/env node
var express = require('express.io');
var app = express().http().io();
var redisStore = require('connect-redis')(express);
app.use(express.cookieParser());
app.use(express.session({
store: new redisStore({
host: '192.168.33.10',
port: 6386
}),
secret: 'A>mVt*Cx87Kq^9:3}am$q67JYtGGAl'
})) ;
app.use(function(err, req, res, next){
response.header('Access-Control-Allow-Origin', '*');
response.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
response.header('Access-Control-Allow-Credentials', 'true');
response.header('Access-Control-Allow-Headers', 'Content-Type, Accept, Origin, Cookie');
next();
});
app.set( 'origins', '*' );
app.io.on('connection', function (socket) {
console.log("connection");
socket.emit('news', { hello: 'world' });
});
app.listen(7076);
console.log('App API Server is listening on port 7076');
非常感谢您提供的任何帮助。
答案 0 :(得分:0)
似乎您在IOS客户端中引用localhost:NSErrorFailingURLStringKey=http://localhost:7076/socket.io/1/?t=16807
,而node.js服务器在某个外部Linux机器上运行。
请尝试连接到服务器。