###困っていること:
SkyWayのアプリケーション実行中にエラーが出るが、その原因がわからない
###エラーメッセージ(Chromeのコンソールより)
skyway-latest.js:420
SkyWay: Error: Failed to send to "DD8aXXnSx3FwcAjm". Please make sure the peerId is correct.
at Socket.<anonymous> (skyway-latest.js:7382)
at Socket.EventEmitter.emit (skyway-latest.js:1315)
at Socket.<anonymous> (skyway-latest.js:8691)
at Socket.Emitter.emit (skyway-latest.js:585)
at Socket.onevent (skyway-latest.js:4930)
at Socket.onpacket (skyway-latest.js:4888)
at Manager.<anonymous> (skyway-latest.js:5135)
at Manager.Emitter.emit (skyway-latest.js:585)
at Manager.ondecoded (skyway-latest.js:4025)
at Decoder.<anonymous> (skyway-latest.js:5135)
###JSコード
javascript
1/** 2[自分] 部屋に参加する 3↓ 4[ルーム既存メンバー] すでに参加しているメンバーにpeerJoinイベントが発生 5↓ 6[ルーム既存メンバー] peerJoinイベントで自分の参加している部屋のメンバーのカウントを+1 7↓ 8[ルーム既存メンバー] メンバーカウントが参加可能最大人数を超えた場合は、参加したユーザー([自分])に "abort" を送信 9↓ 10[自分] "abort" を受信したら、その部屋から退室し次の部屋へ。 → ループ 11 12とすれば、クライアントのみでも可能ではないでしょうか? 13 14ポイントは、メンバーカウントは自分が参加した以降のメンバーの数であること。 15これにより、1つのルームのメンバーが複数人いたとしても、 16それぞれ管理するメンバーカウントは古い人が最大で以降新しいメンバーになるにつれ少なくなりますので、 17”最大人数越え”と判定するのは1人だけで、"abort"が送信されるのも1回のみとなります。 18**/ 19 20const peer = new Peer({ 21 key: 'a0017750-87b9-4a74-90a9-836e4b5e52b4', 22 debug: 3 23}); 24 25let room = null; 26let roomCount = 1; 27let roomName = 'room' + roomCount; 28let roomMemberCount = 0; 29 30const MAX_ROOM_NO = 1; 31const MAX_ROOM_MEMBERS = 2; 32 33// show my id 34peer.on('open', function(id){ 35 $('#myId').text(id); 36}); 37 38// click '自動入室' btn 39$('#autoJoin').click(function(){ 40 autoJoinRoom(); 41}); 42 43// click '退室' btn 44$('#leave').click(function(){ 45 leaveRoom(); 46}) 47 48/** function defs **/ 49function autoJoinRoom(){ 50 leaveRoom(); 51 joinRoom('room' + roomCount); 52} 53 54function leaveRoom(){ 55 if(!room){ 56 return; 57 } 58 room.close(); 59 toLog('left: ' + roomName); 60} 61 62function joinRoom(roomName){ 63 room = peer.joinRoom(roomName); 64 65 room.on('open', function(){ 66 roomMemberCount++; 67 room.send(roomMemberCount); 68 toLog('joined: ' + roomName); 69 }) 70 71 room.on('peerJoin', function(id){ 72 roomMemberCount++; 73 room.send(roomMemberCount); 74 if (roomMemberCount > MAX_ROOM_MEMBERS) { 75 room.send({abort: id}); // send message as an object 76 } 77 78 }) 79 80 room.on('peerLeave', function(){ 81 roomMemberCount--; 82 room.send(roomMemberCount); 83 }) 84 85 // receive msg 'abort:myId' 86 room.on('data', function(msg){ 87 if (msg.data.abort == peer.id) { 88 toLog('failed to join: room' + roomCount); 89 roomCount++; 90 toLog('roomCount = ' + roomCount); 91 if (roomCount <= MAX_ROOM_NO) { 92 autoJoinRoom(); 93 } else { 94 leaveRoom(); 95 toLog('failed to join a room'); 96 } 97 } else { 98 toLog('ID:' + msg.src + '< ' + msg.data); 99 } 100 101 }) 102} 103 104function toLog(msg){ 105 $('#log').append(msg + '<br>'); 106}
###使用環境
- localhost(XAMPP)
- Chrome v.63
###補足
- 接続中のpeer一覧にエラーメッセージ内のpeerIDはありません
- P2Pでメッセージを送ろうとはしていないので、なぜメッセージが出るかがわかりません
- コンソールのエラーメッセージから、スクリプトのどの行でエラーを出しているのか不明です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/23 02:41
2017/12/23 02:42