2017-06-07 127 views
1

我正在开发一个小的PeerJS项目,但我有点困惑。我可以打开连接并确认客户端已连接,但我无法弄清楚接收任何事情的正确方法或语法。或者我可能只是想念一些简单的东西。我尝试过这么多的变化,试图让这个工作。 JS和HTML下面。通过PeerJS接收数据

JS:

var peer = new Peer({ 
    key: 'lwjd5qra8257b9' 
// I use my own API key for testing, this is the public PeerJS key 
//you'll have to generate your own if this doesn't work. 
}); 

peer.on('open', function(id) { 
    $('body').append('<br/>Your personal peer ID is: ' + id + '<br/>Be careful who you share it with.'); 
}); 
peer.on('connection', connect); 

function connect(succ) { 
    conn = succ; 
    //input changes on successful connect 
    $('#peerKeyEnter').val(conn.peer); 
    $('#peerKeyEnter').prop('disabled',true); 
} 

$(document).ready(function() { 

    $('#peerKeySubmit').on('click', function() { 
    var buddy = document.getElementById('peerKeyEnter').value; 
    var buddyConn = peer.connect(buddy); //send connection request 
    connect(buddyConn); //connect to peer 

    //sending data 
    buddyConn.on('open', function() { 
     buddyConn.send('this is supposed to work') 
    }); 

    //receiving data 
    buddyConn.on('connection', function(conn) { 
     buddyConn.on('data', function(data) { 
     console.log(data); 
     }); 
    }); 
    }); //end peerKeySubmit.click 
}); //end doc.ready() 

HTML:

<html> 
<head> 
    <script 
    src="https://code.jquery.com/jquery-3.2.1.js" 
    integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
    crossorigin="anonymous"></script> 
    <!--script src='peer.js'></script--> 
<script src="http://cdn.peerjs.com/0.3/peer.js"></script> 
    <script src='app.js'></script> 
</head> 
<body> 

<input type='text' id='peerKeyEnter' placeholder="Enter peer's ID"></input> 
<button id='peerKeySubmit' value='Send'>Select Peer</button> 

</body> 
</html> 

回答

1

你是几乎没有,实际上。你的buddyConn.on('data'...应该在connect函数中使用该函数的连接参数名称。另外,connect的第二个呼叫不应该在#peerKeySubmit.on回拨函数中。这里是修改的(工作)代码:

var peer = new Peer({ 
    key: 'lwjd5qra8257b9' 
// I use my own API key for testing, this is the public PeerJS key 
//you'll have to generate your own if this doesn't work. 
}); 

peer.on('open', function(id) { 
    $('body').append('<br/>Your personal peer ID is: ' + id + '<br/>Be careful who you share it with.'); 
}); 
peer.on('connection', connect); 

function connect(succ) { 
    conn = succ; 
    conn.on('data', function (data) { 
    console.log('Received from ' + conn.peer + ': ' + data); 
    }); 

    //input changes on successful connect 
    $('#peerKeyEnter').val(conn.peer); 
    $('#peerKeyEnter').prop('disabled',true); 
} 

$(document).ready(function() { 

    $('#peerKeySubmit').on('click', function() { 
    var buddy = document.getElementById('peerKeyEnter').value; 
    var buddyConn = peer.connect(buddy); //send connection request 

    //sending data 
    buddyConn.on('open', function() { 
     buddyConn.send('this is supposed to work') 
    }); 

    }); //end peerKeySubmit.click 
}); //end doc.ready() 
+1

非常感谢,我被困在那一段时间。我不敢相信我从来没有注意到接收函数不应该在peerKeySubmit.click中 – MalyG