我有一个项目,它具有依赖(通过CocoaPods安装)使用SocketRocket并从HeapAnalytics导入一个静态库.显然,HeapAnalytics库已经使用了SocketRocket.编译时没有错误,但在运行时收到以下内容:
Class SRWebSocket is implemented in both [path] and [path].
One of the two will be used. Which one is undefined.
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理它,因为我看到的大多数解决方案都需要自己编译静态库来更改类名等,而且我无法访问源代码.
有什么建议?
我使用Objective-C的SocketRocket库连接到websocket:
-(void)open {
if( self.webSocket ) {
[self.webSocket close];
self.webSocket.delegate = nil;
}
self.webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ws://192.168.0.254:5864"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20]];
self.webSocket.delegate = self;
[self.webSocket open];
}
Run Code Online (Sandbox Code Playgroud)
打开连接工作完全正常.建立连接后调用委托.
-(void)webSocketDidOpen:(SRWebSocket *)webSocket {
NSLog(@"WebSocket is open");
}
Run Code Online (Sandbox Code Playgroud)
但是,当我想关闭连接时,没有任何反应.
-(void)close {
if( !self.webSocket )
return;
[self.webSocket close];
self.webSocket.delegate = nil;
}
Run Code Online (Sandbox Code Playgroud)
不会调用成功关闭连接的委托.谁能告诉我为什么会这样?
感谢您阅读我的问题.
我刚刚使用SocketRocket制作了一个简单的实时文本聊天应用程序.它在iOS 6.0和5.1上运行良好,但是当我尝试在连接时运行它时,我得到以下错误...
Websocket Failed With Error Error Domain=NSOSStatusErrorDomain Code=-9800 "The
operation couldn’t be completed. (OSStatus error -9800.)"
UserInfo=0x6e506e0 {}
Run Code Online (Sandbox Code Playgroud)
有谁知道这可能意味着什么或如何解决它?我浏览了github上的问题,但无法找到任何内容,它声称可以在iOS5 +上运行.
编辑:要添加,这是我在模拟器上测试的时候.我没有5.0的设备,所以我不确定手机是否以相同的方式失败.另外,如果我使用ws而不是wss(加密),它似乎工作正常.
我正在挣扎.这是我第一次尝试安装这个,因为我需要Pony Debugger工作.
Undefined symbols for architecture i386:
"_utf8_countTrailBytes", referenced from:
_validate_dispatch_data_partial_string in libSocketRocket.a(SRWebSocket.o)
"_utf8_nextCharSafeBody", referenced from:
_validate_dispatch_data_partial_string in libSocketRocket.a(SRWebSocket.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议!
谢谢!
编辑:我添加了SocketRocket.Framework到构建阶段,错误消失了,但现在给我一个新的.
/Library/Developer/Xcode/DerivedData/ProjectIpaws-fxtqgpqcnolfqvgaeikbuxwzdbcv/Build/Products/Debug-iphonesimulator/SocketRocket/SocketRocket
Run Code Online (Sandbox Code Playgroud)
新的根本没有意义.
新的iOS websocket库SocketRocket看起来非常棒,聊天示例项目真的很棒.示例聊天服务器是用Python编写的,我不知道.我对node.js上的socket.io稍微熟悉,并且更喜欢尝试javascript.我尝试将SocketRocket TestChat模拟器应用程序连接到node.js(6.10)socket.io(0.8.7),但连接被拒绝.(另外,我也不是节点专家,所以这可能是一个愚蠢的问题).
在最近对SO 问题的回答中,mikelikespie对操作说:"我建议更新你的堆栈以使用我们刚刚发布的iOS WebSocket库."
这究竟是什么意思?有什么必要让SocketRocket库与节点socket.io服务器通信?非常感谢任何示例代码或建议.
1)如果我必须为使用SignalR的服务器开发本机IOS客户端,我可以使用
SocketRocket还是UnittWebSocketClient?
2)客户端App不使用任何浏览器会有关系吗?
3)SignalR与.net 4.5中提供的Superwebsocket或microsoft的websocket有什么不同?他们都不支持rfc6455协议吗?
我尝试将react-native版本更新到最新的0.72.3并运行pod install,这导致了下一个错误
[!] CocoaPods could not find compatible versions for pod "SocketRocket":
In snapshot (Podfile.lock):
SocketRocket (= 0.6.0, ~> 0.6.0)
In Podfile:
React-Core/RCTWebSocket (from `../node_modules/react-native/`) was resolved to 0.72.3, which depends on
SocketRocket (= 0.6.1)
Specs satisfying the `SocketRocket (= 0.6.0, ~> 0.6.0), SocketRocket (= 0.6.1)` dependency were found, but they required a higher minimum deployment target.
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?有正常的解决方法吗?
我在使用SocketRocket时遇到iOS EXC_BAD_ACCESS错误,我想知道我可以做些什么来进一步调试问题,以确定问题是在我身边,还是在SocketRocket方面.
我得到的堆栈跟踪是:
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x2000000c
raw
0 libobjc.A.dylib objc_msgSend + 5
1 OMlearnings SRWebSocket.m line 692 __30-[SRWebSocket _failWithError:]_block_invoke_2
2 libdispatch.dylib _dispatch_call_block_and_release + 10
10 UIKit UIApplicationMain + 1136
11 OMlearnings main.m line 16 main
Run Code Online (Sandbox Code Playgroud)
或者有时候
Crashed: NSOperationQueue Serial Queue
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0xc
raw
0 libobjc.A.dylib objc_msgSend + 5
1 OMlearnings SRWebSocket.m line 613 -[SRWebSocket scheduleInRunLoop:forMode:]
2 OMlearnings SRWebSocket.m line 600 -[SRWebSocket _connect]
3 OMlearnings OMSRealTimeTeamDashboard.m line 157 -[OMSRealTimeTeamDashboard sendMessage:]
4 OMlearnings OMSRealTimeTeamDashboard.m line 171 -[OMSRealTimeTeamDashboard …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SocketRocket连接客户端(iOS应用程序)和服务器(Node.js),如下所示.
的iOS(SocketRocket):
NSURL *url = [NSURL urlWithString:@"ws://localhost:8080"];
SRWebSocket *_socket = [SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:url];
_socket.delegate = self;
[_socket open];
/* SRWebSocketDelegate */
-(void)webSocketDidOpen:(SRWebSocket*)webSocket{
[webSocket send:@"something"];
}
-(void)webSocket:(SRWebSocket*)webSocket didReceiveMessage:(id)message{
NSLog(@"didReceiveMessage: %@",[message description]);
}
-(void)webSocket:(SRWebSocket*)webSocket didFailWithError:(NSError*)error{
NSLog(@"the Error: %@",error);
}
Run Code Online (Sandbox Code Playgroud)
Node.js的(WS):
var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({
host:'localhost',
port:8080
});
wss.on('connection',function(ws){
ws.on('message',function(message){
console.log('received: %s', message);
ws.send(message);
});
});
Run Code Online (Sandbox Code Playgroud)
然后,我收到以下消息:
the error: Error Domain=NSPOSIXErrorDomain Code=61 "The operation couldn’t be completed. Connection refused"
Run Code Online (Sandbox Code Playgroud)
我已经找到了解决这个问题的方法,但我无法找到解决方案.我该如何解决这个问题?
我正在尝试将此框架添加到项目中.我按照这些指示写了这封信:
我确定只打开了一个xcode实例,然后将SocketRocket.xcodeproj文件拖到我的项目中.我将.framework文件添加到链接库,创建了一个复制文件构建阶段,然后将.framework添加到复制文件构建阶段.
这是我尝试构建时遇到的错误:
clang:错误:没有这样的文件或目录:'/ Users/adamhickey/Library/Developer/Xcode/DerivedData/websockettest -fcuhfltporfkitgubwcjukxogzas/Build/Products/Debug-iphonesimulator/SocketRocket/SocketRocket'
这是非常正确的:该目录不存在.
在构建阶段,SocketRocket.framework在Link Binary With Libraries下是红色的.它在SocketRocket子项目的products文件夹中也是红色的.
我一直在谷歌搜索这个错误几个小时,我尝试过的大多数事情都指向我改变Xcode-> preferences-locations中的构建位置.我试过了:
如果我在一个单独的xcode实例中打开SocketRocket.xcodeproj并尝试构建它,那么这四个产品中有3个是红色的.产品包括:libSocketRocket.a,SRWebSocketTests.octest,TestChat.app和SocketRocket.framework.第一个是白色,而后三个是红色.
我假设如果我可以在单独的项目中构建.framework文件,这将解决我的整体问题.但是,我所做的一切似乎都没有任何效果.
请帮忙!我正在使用xcode 4.6.
socketrocket ×10
ios ×8
objective-c ×4
websocket ×4
node.js ×2
xcode ×2
cocoa-touch ×1
cocoapods ×1
connection ×1
frameworks ×1
ios5 ×1
react-native ×1
signalr ×1
socket.io ×1
xcode4 ×1