从iOS使用Socket.io-stream将文件上载到Node.js服务器

从iOS使用Socket.io-stream将文件上载到Node.js服务器,ios,iphone,objective-c,node.js,socket.io,Ios,Iphone,Objective C,Node.js,Socket.io,我正在编写一个本机iOS客户端,以便使用与Node.js服务器交互。我目前可以将单个事件发送到服务器。然而,服务器正在使用它来处理上传文件流,我需要让我的iOS代码以某种方式与之交互。我的socket.io包装器似乎没有实现这一点的任何相关API。接收server.js的代码如下所示: io.sockets.on('connection', function (socket) { console.log("connection occurring"); ss(socket).on

我正在编写一个本机iOS客户端,以便使用与Node.js服务器交互。我目前可以将单个事件发送到服务器。然而,服务器正在使用它来处理上传文件流,我需要让我的iOS代码以某种方式与之交互。我的socket.io包装器似乎没有实现这一点的任何相关API。接收server.js的代码如下所示:

io.sockets.on('connection', function (socket) {
    console.log("connection occurring");
    ss(socket).on('uploadFile', function (stream, data, callback) {
      //...I can't get a 'stream' to this event for it to work with
    });
    socket.on('passwordLogin', function (data, callback) {
      //...I can cause these kind of events just fine
    });
    //...other event declarations
 }
我通常以这种方式调用事件,对于“socket.on”声明的事件,它可以正常工作:

[_socket sendEvent:@"passwordLogin" 
          withData:@{...login info...} 
    andAcknowledge:aCallbackBlock];
我想我需要扩展Socket.IO-objc,除非我缺少一些东西,比如:

//TODO: Attempt to expand SocketIO to include streams.
- (void) sendEvent:(NSString *)eventName withStream:(NSStream*) stream withData:(id) data   andAcknowledge:(SocketIOCallback) function
{
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObject:eventName forKey:@"name"];

    // do not require arguments
    if (data != nil) {
        [dict setObject:[NSArray arrayWithObject:data] forKey:@"args"];
    }

    SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"event"];
    packet.data = [SocketIOJSONSerialization JSONStringFromObject:dict error:nil];
    packet.pId = [self addAcknowledge:function];
    //Is this even a valid approach?
    packet.stream = stream;//<--NEW BIT
    if (function) {
       packet.ack = @"data";
    }
    [self send:packet];
}
//TODO:尝试扩展SocketIO以包含流。
-(void)sendEvent:(NSString*)带有流的事件名称:(NSStream*)带有数据的流:(id)数据和确认:(SocketIOCallback)函数
{
NSMutableDictionary*dict=[NSMutableDictionary Dictionary WithObject:eventName forKey:@“name”];
//不需要参数
如果(数据!=nil){
[dict setObject:[NSArray arrayWithObject:data]forKey:@“args”];
}
SocketIOPacket*packet=[[SocketIOPacket alloc]initWithType:@“事件”];
packet.data=[SocketIOJSONSerialization JSONStringFromObject:dict error:nil];
packet.pId=[自添加确认:函数];
//这是一个有效的方法吗?

packet.stream=stream;//您找到解决问题的方法了吗?!@Sewerbird您找到解决方法了吗?