如何使用TCP套接字而不是UDP发布数据

时间:2015-06-21 11:37:30

标签: sockets tcp webrtc pubnub

我一直在尝试使用pubnub来通过对等方发送数据流。然而,正在发生的事情是,一方的消息大小与另一方的消息大小不同,尽管发送和接收的消息数量是相同的。我想到的是,通过某种方式,部分数据包丢失了。 />

        pubnub.publish({
           channel: 'my_channel',    
           'message' : {  

             'packet':  array_of_packets[counter_array_of_packets], 
              'which_packet_is': counter_array_of_packets,              
               'payload_size': calculate_payload_size('my_channel'array_of_packets[counter_array_of_packets])                                  
           }                   
           callback : function(m){console.log(m)}
        });
            pubnub.subscribe({ 
               channel: 'my_channel',
               message: function(m){wait_(m)},
               uuid: 'Mitsos',
               error: function (error) {
               // Handle error here
               console.log(JSON.stringify(error));
    }
 });

用于计算大小的函数是:

function calculate_payload_size( channel, message ) {
    return encodeURIComponent(
        channel + JSON.stringify(message)
    ).length + 100;
   }

那么如何以一种使用TCP(可靠传输)的方式使用上述两个函数发布和订阅? (如果这可以有任何帮助,这里实现了pubnub - index.html的一个工作示例,其中数据包以正确的方式到达另一方,但我似乎无法找到他是否在任何地方使用tcp link

1 个答案:

答案 0 :(得分:0)

所有PubNub客户端库仅通过TCP套接字连接进行通信 如果您使用的是PubNub JavaScript,Java或Objective-C SDK,那么SDK将在您订阅数据通道后自动为您打开TCP套接字连接。本指南http-streaming-over-tcp-with-telnet-example将提供一种简单的方法来使用Telnet作为通过TCP套接字流式传输JSON消息有效负载的示例。

Stream JSON Messages with Telnet Example

通过在套接字上写入初始数据有效负载,您可以使用PubNub的无限TTL套接字会话策略使TCP套接字永远保持活动和活动状态。在建立TCP连接后,发送初始有效负载。在Keeping a TCP Socket Connection Open on your first Network Call上观看此视频,它将引导您完成如何保持TCP套接字连接打开的步骤。