当尝试使用SocketRocket连接到自定义套接字服务器时,我收到错误:
Error Domain=SRWebSocketErrorDomain Code=2133 "Invalid Sec-WebSocket-Accept response" UserInfo=0x8f6af00 {NSLocalizedDescription=Invalid Sec-WebSocket-Accept response}
Run Code Online (Sandbox Code Playgroud)
我已将此链接回_HTTPHeadersDidFinish中的_checkHandshake方法._checkHandshake方法正在执行以下操作:
NSString *acceptHeader = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Accept")));
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题,并且有最新版本的socketrocket,但似乎没有用?
https://github.com/square/SocketRocket/issues/24
请让我知道如何解决这个错误(SocketRocket - 无效的Sec-WebSocket-Accept)
我一直在使用SocketRocket进行一些项目,并注意到SocketRocket有很多未解决的问题并且有问题.我亲自修补了一些我遇到的崩溃事件.
Square过去一年似乎没有维持SocketRocket.是否有另一个他们的回购分支被认为更稳定/权威?
我甚至愿意考虑一个替代库,甚至可能是一个用C/C++编写的库,如果它可以与ObjC编码模式一起使用.
如果客户端使用Web套接字关闭Internet,我想检测客户端连接。我的代码是:
//Include util library
var util = require('util');
// Include underscore library
var _ = require('underscore')._;
//For websocket
var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}),
webSockets = {} // userID: webSocket
// CONNECT /:userID
// wscat -c ws://localhost:5000/1
webSocketServer.on('connection', function (webSocket)
{
var userID = webSocket.upgradeReq.url.substr(1);
//console.log('User_id is ',userID);
webSockets[userID] = webSocket
util.log('User_id: [' + userID + '] enter in connected users list of [ ' + Object.getOwnPropertyNames(webSockets)+' ]')
// Call function which check id exist in letswalkee DB …Run Code Online (Sandbox Code Playgroud) 我刚刚从我的电脑上执行了一个基本的 DDOS:
websocket-bench -a 2500 -c 200 wss://s.example.com
Run Code Online (Sandbox Code Playgroud)
令我沮丧的是,我的服务器崩溃了!WS 通过连接到我的 nginx 代理来工作:
location / {
proxy_pass http://sock;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 60;
}
upstream sock {
server 127.0.0.1:1203 fail_timeout=1s;
}
Run Code Online (Sandbox Code Playgroud)
和本地服务器上的端口1203是棘轮。棘轮的设置是我允许任何连接,第一个onMessage执行身份验证,如果无效则关闭连接。
我还尝试通过在第一个连接上传递标头来进行身份验证,如果无效,套接字将关闭,但这根本没有帮助,nginx 仍然达到 100% 资源,然后崩溃。
我应该分析什么来防止这些崩溃?
当将上游更改为另一个关闭的端口(即禁用它)时,服务器仍然崩溃。
我在我的项目中集成了 pod,特别是 SignalR、AFNetworking 和 SocketRocket。它已成功安装,但是当我打开 .xcworkspace 时,此错误显示:


有没有人遇到过这种错误?提前致谢。
更新:我的 .xcodeproj 已经出现。但是框架显示为红色。我该如何解决这个问题?

我目前正在使用SocketRocket作为我的iOS应用程序的WebSocket实现,并希望将我的服务器CA作为具有SR_SSLPinnedCertificates属性的可信证书.我正在寻找一个加载一个或多个证书以传递到SocketRocket的好例子.我有以下代码可以工作,但我不确定它是否正确或是否有更直接的方法.
CFArrayRef keyref = NULL;
NSString *path = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"p12"];
NSData *data = [[NSData alloc] initWithContentsOfFile:path];
OSStatus status = SecPKCS12Import((__bridge CFDataRef)data, (__bridge CFDictionaryRef)[NSDictionary dictionaryWithObject:@"eftl_key_pass" forKey:(__bridge id)kSecImportExportPassphrase], &keyref);
if (status == noErr) {
CFDictionaryRef identityDict = CFArrayGetValueAtIndex(keyref, 0);
SecIdentityRef identityRef = (SecIdentityRef)CFDictionaryGetValue(identityDict, kSecImportItemIdentity);
SecCertificateRef certRef = NULL;
SecIdentityCopyCertificate(identityRef, &certRef);
}
Run Code Online (Sandbox Code Playgroud) socketrocket ×6
ios ×4
objective-c ×2
websocket ×2
afnetworking ×1
cocoapods ×1
iphone ×1
nginx ×1
node.js ×1
npm ×1
php ×1
ratchet ×1
signalr ×1
sockets ×1
truststore ×1