react-native-multipeer, 使用Multipeer连接通过adhoc无线通信进行通信

分享于 

7分钟阅读

GitHub

  繁體 雙語
Communicate over ad hoc wifi using Multipeer Connectivity
  • 源代码名称:react-native-multipeer
  • 源代码网址:http://www.github.com/lwansbrough/react-native-multipeer
  • react-native-multipeer源代码文档
  • react-native-multipeer源代码下载
  • Git URL:
    git://www.github.com/lwansbrough/react-native-multipeer.git
    Git Clone代码到本地:
    git clone http://www.github.com/lwansbrough/react-native-multipeer
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/lwansbrough/react-native-multipeer
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    react-native-multipeer

    使用Multipeer连接通过adhoc无线通信进行通信。

    已知问题

    下面是已知问题的列表。 对于以下任何问题都欢迎请求请求 !

    • 不支持在本机的响应中使用流,因此流目前不可用。
    • 不支持资源传输: 我希望它与它的他用户的它的他文件资源无缝地工作,所以我正在等待这些规格。

    正在启动

    • npm install react-native-multipeer@latest --save
    • Add Files to [your project's name]
    • 在 XCode navigator中,在项目导航器中,选择你的项目。 Link Binary With Libraries
    • 在项目导航器中单击 RCTMultipeerConnectivity.xcodeproj,然后转到 Build Settings 选项卡。 确保'全部'已经在( 而不是'基本') 上打开。 查找 Header Search Paths 并确保它同时包含 $(SRCROOT)/../react-native/React$(SRCROOT)/../../React - 标记为 recursive
    • 运行你的项目( Cmd+R )

    用法

    你所需要的就是使用 react-native-multipeerrequire MODULE 然后就可以开始使用singleton实例了。

    var React =require('react-native');var {
     AppRegistry,
     ListView,
     StyleSheet,
     Text,
     View,
     TouchableHighlight
    } = React;var MultipeerConnectivity =require('react-native-multipeer');functiongetStateFromSources() {
     var ds =newListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
     return {
     dataSource:ds.cloneWithRows(MultipeerConnectivity.getAllPeers())
     };
    }var peerApp =React.createClass({
     getInitialState:function() {
     returngetStateFromSources()
     },
     componentDidMount() {
     MultipeerConnectivity.on('peerFound', this._onChange);
     MultipeerConnectivity.on('peerLost', this._onChange);
     MultipeerConnectivity.on('invite', ((event) => {
     // Automatically accept invitationsMultipeerConnectivity.rsvp(event.invite.id, true);
     }).bind(this));
     MultipeerConnectivity.on('peerConnected', (event) => {
     alert(event.peer.id+' connected!');
     });
     MultipeerConnectivity.advertise('channel1', { name:'User-'+Math.round(1e6*Math.random()) });
     MultipeerConnectivity.browse('channel1');
     },
     renderRow(peer) {
     return (
     <TouchableHighlight onPress={this.invite.bind(this, peer)} style={styles.row}><View><Text>{peer.name}</Text></View></TouchableHighlight> );
     },
     render:function() {
     return (
     <View style={styles.container}><ListView
     style={styles.peers}
     dataSource={this.state.dataSource}
     renderRow={this.renderRow}
     /></View> );
     },
     _invite(peer) {
     MultipeerConnectivity.invite(peer.id);
     },
     _onChange() {
     this.setState(getStateFromSources());
     }
    });var styles =StyleSheet.create({
     container: {
     flex:1,
     justifyContent:'center',
     alignItems:'center',
     backgroundColor:'transparent',
     },
     welcome: {
     fontSize:20,
     textAlign:'center',
     margin:10,
     },
     instructions: {
     textAlign:'center',
     color:'#333333',
     },
    });AppRegistry.registerComponent('peerApp', () => peerApp);

    MultipeerConnectivity 方法

    通道

    advertise(channelId, info)

    允许将自己发现为给定通道中的对等方。 channelId 可以是任意字符串。 info 是一个包含数据的对象,当你加入通道时,它将被传递给其他的节点。

    browse(channelId)

    浏览给定通道上的节点。

    getAllPeers()

    获取当前通道中的所有节点。

    会话

    getConnectedPeers()

    获取当前会话中的所有节点。

    disconnect([callback])

    断开与当前会话的连接。

    invite(peerId [, callback])

    从你的频道邀请对等方进入你的会话。

    rsvp(inviteId, accept [, callback])

    接受/拒绝会话邀请。

    通信

    broadcast(data [, callback<err>])

    将数据发送到当前通道中所有已经连接的节点。

    send(data, recipients [, callback<err>])

    将数据发送到当前通道中的特定节点。 recipients 是对等id或者 Peer的array。

    MultipeerConnectivity 事件

    MultipeerConnectivity 继承自 EventEmitter - 因为 .on 方法可以用于侦听重要事件。 下面是这些事件的列表。

    data

    事件属性:Peer senderdata

    sender 接收新数据时激发。

    peerFound

    事件属性:Peer

    在当前通道中发现一个新的对等点。

    peerLost

    事件属性:Peer

    对方离开了当前频道。

    peerConnected

    事件属性:Peer

    对等方已经连接到你的会话。

    peerConnecting

    事件属性:Peer

    对等方正在连接你的会话。

    peerDisconnected

    事件属性:Peer

    会话断开连接的对等方。

    invite

    事件属性:senderinvite

    你被邀请参加一个会话。

    Peer 方法

    事件

    connected

    连接到当前会话的对等点。

    connecting

    对等方正在连接到当前会话。

    disconnected

    对等方与当前会话断开连接。

    lost

    对方离开了当前频道。

    待办事项

    这些特性是我认为将在这个 MODULE 中包含的一些重要的特性。 请求请求欢迎 !

    • 流支持
    • 资源分配

    COM  COMM  WIF  WIFI  Communicate  Connectivity  
    相关文章