이전에는 이 시리즈의 1부
아이오닉 프레임워크와 카우치베이스에 관해서는 카우치베이스 라이트를 사용하여 로컬 CRUD를 수행하는 방법에 대한 글을 썼습니다.
(만들기, 검색, 업데이트, 삭제) 작업을 할 일 목록 예제에서 살펴봤습니다. 이번에는 한 단계 더 발전하여 다음과 같이 살펴보겠습니다.
카우치베이스 동기화 게이트웨이를 사용하여 여러 장치와 플랫폼에서 변경 사항을 복제하는 방법을 알려드립니다.
전제 조건
이 튜토리얼을 성공적으로 완료하려면 다음을 수행해야 합니다:
- Ionic 프레임워크 블로그 시리즈 1부 완료
- Couchbase 동기화 게이트웨이 다운로드
- 안드로이드용 빌드의 경우 안드로이드 SDK
- iOS용으로 빌드하는 경우 Xcode가 설치된 Mac
이 튜토리얼은 시리즈의 1부에서 중단된 부분을 정확히 따라갈 것이므로, 첫 번째 파트에서 작업하는 것이 중요합니다.
상태를 유지한 후 계속하세요.
카우치베이스 동기화 게이트웨이 구성하기
애플리케이션에서 동기화 게이트웨이를 사용하려면 먼저 구성 파일을 만들어야 합니다. 다음과 같은 파일을 만듭니다.
동기화 게이트웨이-config.json 를 프로젝트 루트에 추가하고 다음을 포함하세요:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
{ "log": ["CRUD", "REST+", "액세스"], "데이터베이스": { "todos": { "서버": "월러스:", "users": { "GUEST": {"disabled": false, "admin_channels": ["*"]} }, "동기화": ` 함수(doc, oldDoc) { // 참고 이 기능은 iOS, Android 및 PhoneGap 버전에서 동일합니다. 만약 (doc.유형 == "task") { 만약 (!doc.list_id) { throw({금지됨 : "항목에 list_id가 있어야 합니다."}) } 채널("task-"+doc.list_id); } else 만약 (doc.유형 == "목록") { 채널("list-"+doc._id); 만약 (!doc.소유자) { throw({금지됨 : "목록에 소유자가 있어야 합니다"}) } 만약 (oldDoc) { var 이전 소유자 이름 = oldDoc.소유자.하위 문자열(oldDoc.소유자.indexOf(":")+1); 요구 사용자(이전 소유자 이름) } var 소유자 이름 = doc.소유자.하위 문자열(doc.소유자.indexOf(":")+1); 액세스(소유자 이름, "list-"+doc._id); } } ` } } } |
위의 내용이 너무 많지 않으므로 부담스러워하지 마세요. 대부분의 로직은 문서에 다음 항목이 모두 있는지 확인하기만 합니다.
필수 속성입니다.
여기서 일어나는 몇 가지 주요 사항을 강조하기 위해 먼저 databases.todos 속성입니다.
이것이 우리의 원격 데이터베이스가 될 것입니다. 우리가 사용하는 서버는 바다코끼리 메모리 기반 솔루션 번들인
를 동기화 게이트웨이에 추가합니다. 카우치베이스 서버에 저장할 준비가 되기 전에 테스트하는 데 유용합니다. 또한
게스트 액세스를 지원하므로 당분간 등록된 사용자는 필요하지 않습니다.
그러면 동기화 자바스크립트 코드가 나타납니다. 문서가 작업 유형인 경우 상위 목록 ID가 있는지 확인하고, 그렇지 않은 경우 다음을 수행합니다.
를 입력하면 강제로 실패합니다. 문서가 있는 경우 동기화 게이트웨이에 문서 앞에 작업- 키를 입력하세요. 문서가
유형이 작업이 아닌 목록일 수 있습니다. 문서에 소유자 속성에 저장하고
앞에 동기화 게이트웨이 목록- 키를 입력하세요.
로그인을 위한 새로운 아이오닉 경로 추가
AngularJS UI-라우터에 추가하기
현재로서는 AngularJS 구성에 두 개의 경로가 포함되어야 합니다. 하나는 할 일 목록용이고 다른 하나는 작업용입니다. 우리가 하고 싶은 일
이제 동기화 게이트웨이에 로그인할 수 있는 세 번째 경로가 추가되었습니다. 프로젝트의 www/js/app.js 파일을 만들고 다음을 수행합니다.
변경합니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
카우치베이스앱.구성(함수($stateProvider, $urlRouterProvider) { $stateProvider .상태("로그인", { URL: "/로그인", templateUl: "템플릿/로그인.html", 컨트롤러: "LoginController" }) .상태("todoLists", { URL: "/todoLists", templateUl: "templates/todolists.html", 컨트롤러: "TodoListsController" }) .상태("작업", { URL: "/작업/:리스트아이디", templateUl: "templates/tasks.html", 컨트롤러: "태스크 컨트롤러" }); $urlRouterProvider.그렇지 않으면("/로그인"); }); |
새로운 로그인 상태와 기본 경로가 다음과 같이 변경된 것을 확인할 수 있습니다. /로그인 대신 /todoLists. .
경로가 완성되었으므로 이제 뷰와 컨트롤러를 만들어 마무리하기만 하면 됩니다.
로그인 보기 만들기
프로젝트의 www/templates 디렉토리에 다음과 같은 파일을 만듭니다. login.html 를 클릭하고 다음 코드를 추가합니다:
게스트 사용자로 로그인
버튼이 있는 단순한 보기일 뿐입니다. 사용자가 버튼을 클릭하면 basicLogin() 함수가 호출되면
로그인 컨트롤러에 생성할 것입니다.
로그인 컨트롤러 만들기
로그인을 처리하는 컨트롤러는 매우 중요한 한 가지 작업을 수행합니다. 동기화 게이트웨이 간의 복제 프로세스를 시작합니다.
및 로컬 디바이스. 다음은 컨트롤러의 슬림 버전입니다. www/js/app.js file:
1 2 3 4 5 6 7 8 9 10 11 12 |
카우치베이스앱.컨트롤러("LoginController", 함수($범위, $상태, $ionicHistory) { $ionicHistory.다음뷰옵션({ disableAnimate: true, disableBack: true }); $범위.기본로그인 = 함수() { }; }); |
주목하세요. $ionicHistory.nextViewOptions 메서드를 사용해야 합니다. 이는 하드웨어 뒤로 버튼으로 사용자가 되돌아가는 것을 방지하기 위한 것입니다.
을 클릭하면 이미 로그인한 후 로그인 화면으로 이동합니다. iOS에는 하드웨어 백이 없으므로 Android에서 더 중요합니다.
다음으로 $scope.basicLogin() 함수를 호출했습니다. 그 내용은 다음과 같습니다:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$범위.기본로그인 = 함수() { todoDatabase.복제("할 일", "http://192.168.56.1:4984/todos", true).다음(함수(결과) { todoDatabase.복제("http://192.168.56.1:4984/todos", "할 일", true).다음(함수(결과) { $상태.go("todoLists"); }, 함수(오류) { // 로컬 장치로 복제하는 동안 오류가 발생했습니다. }); }, 함수(오류) { // 동기화 게이트웨이에 복제하는 동안 오류가 발생했습니다. }); }; |
가장 먼저 일어나는 일은 로컬 장치에서 동기화 게이트웨이로 복제하는 것입니다. 모든 변경 사항을 지속적으로 복제하도록 설정되어 있습니다. 만약
로컬에서 원격으로의 복제가 성공적으로 시작되면 원격에서 로컬로의 복제도 마찬가지입니다. 데이터는 다음에서 지속적으로 복제됩니다.
원격 동기화 게이트웨이를 장치에 연결합니다.
둘 다 성공하면 사용자는 할 일 목록으로 리디렉션됩니다. 동기화 게이트웨이가 작동 중일 필요는 없습니다.
지난 로그인. 서버가 가동되지 않으면 정상적으로 실패하고 계속 진행됩니다. 또한 위 기능에 나열된 IP는 다음과 같습니다.
시뮬레이터와 로컬 호스트 컴퓨터 간의 통신을 허용하는 IP입니다. 사용자마다 다를 수 있으며 약간의 조사가 필요할 수 있습니다.
문서 데이터에 소유자 정보 추가
로컬 데이터베이스에 문서를 저장하는 방식에 두 가지 사소한 변경이 필요합니다. 로컬 데이터베이스의 $scope.insert 둘 다의
작업 및 할 일 목록 컨트롤러, 그리고 소유자 속성을 추가해야 합니다. 이 경우 소유자는 guest.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$범위.삽입 = 함수() { $ionicPopup.프롬프트({ title: '새 할 일 목록 입력', 입력 유형: 'text' }) .다음(함수(결과) { var 객체 = { title: 결과, 유형: "목록", 소유자: "guest" }; todoDatabase.createDocument(객체).다음(함수(결과) { // 문서가 성공적으로 생성되었습니다. }, 함수(오류) { // 문서 생성 실패 }); }); } |
위 코드는 다음 중 하나의 예입니다. $scope.insert 함수와 비슷합니다. 여기서도 유일한 차이점은 다음과 같이
소유자 속성입니다.
프로젝트 테스트
카우치베이스 동기화 게이트웨이 실행하기
동기화 게이트웨이를 다운로드한 후 명령 프롬프트 또는 터미널에서 다음을 실행합니다:
1 2 3 |
/경로/에/동기화/게이트웨이/bin/동기화 게이트웨이 /경로/에/프로젝트/동기화-게이트웨이-구성.json |
동기화 게이트웨이가 문제 없이 시작되어야 합니다.
Android용 테스트
장치가 연결되었거나 시뮬레이터가 실행 중인 상태에서 명령 프롬프트 또는 터미널에서 다음 두 명령을 실행하여 다음을 수행합니다.
APK 파일을 빌드하고 설치합니다:
1 2 3 4 |
이온 빌드 안드로이드 adb 설치 -r 플랫폼/안드로이드/빌드/출력/apk/안드로이드-debug.apk |
iOS용 테스트
이를 수행하는 두 가지 좋은 방법이 있습니다. 프로젝트를 빌드하고 Xcode로 열거나 애플리케이션을 빌드하고 에뮬레이트할 수 있습니다.
를 실행할 수 있습니다. 첫 번째는 다음과 같이 할 수 있습니다:
1 2 3 |
이온 빌드 ios |
그런 다음 프로젝트의 platform/ios/ 디렉터리를 열고 Xcode 프로젝트 파일을 실행합니다.
NPM(노드 패키지 관리자) 패키지를 설치한 경우 iOS-SIM를 클릭하면 다음을 수행할 수 있습니다:
1 2 3 4 |
이온 빌드 ios 이온 에뮬레이트 ios |
결론
Couchbase PhoneGap 플러그인과 Couchbase 동기화 게이트웨이를 사용하여 데이터를 복제하는 모바일 할 일 목록 애플리케이션을 만들었습니다.
로컬 및 원격으로 액세스하여 여러 장치와 플랫폼에서 액세스할 수 있습니다. 우리는 AngularJS를 사용하여 RESTful 엔드포인트에 쉽게 연결했습니다.
를 노출합니다.
이 시리즈는 다음 링크에서 전체 내용을 다운로드할 수 있습니다. 카우치베이스 랩 깃허브 페이지로 이동합니다.
로컬과 원격 간의 동기화가 실시간으로 이루어지나요?
네, 맞습니다!
안녕하세요 닉, 멋진 튜토리얼입니다. 나는 당신의 튜토리얼에서 많은 것을 배웠습니다. 감사합니다. 나는 당신의 일련의 응용 프로그램 파트 1과 파트 2를 기본으로 사용하여 앱을 만들었습니다. 나는 당신이 언급 한 모든 절차를 수행했으며 소파베이스 동기화 게이트웨이에 연결할 수 있으며 내 앱을 통해 일부 고객을 추가했습니다. 데이터베이스에서도 문서를 볼 수 있습니다. 하지만 모바일 앱에서 다른 고객으로 로그인하면 다른 고객이 생성 한 모든 티켓이 모바일 앱에 표시됩니다. 제가 추가로 업데이트해야 할 것이 있습니까?
사용자 인증을 수용하려면 동기화 게이트웨이 구성이 제가 나열한 것보다 더 복잡해야 합니다. 마찬가지로 로컬 장치에서 인증을 사용해야 합니다:
이 내용을 살펴보고 다시 돌아올 수 있습니다:
http://developer.couchbase.com…
기꺼이 추가 질문에 답변해 드리겠습니다 :-)
네, 알겠습니다. 먼저 동일한 기기에서 동일한 고객과 함께 입력해서는 안됩니다. 다른 고객과 로그인하려면 로그 아웃 옵션을 지워야합니다. 하지만 사용자가 액세스 할 수 있도록 채널을 개별적으로 할당하는 방법은 ... 동기화 구성 파일에서 너무 많은 수정 사항이 있습니다. 프로필 액세스도 시도했습니다. 하지만 실패했습니다. 고객을 위해 채널을 할당하는 데 도움을 줄 수 있습니까? 예 : 2 명의 고객과 2 명의 직원 및 관리자로.
{
\"log\": [\"CRUD\", \"REST+\", \"Access\"],
\"adminInterface\":\":4985\",
\"데이터베이스\": {
\"할 일\": {
\"users\": {
\GUEST\": {\"disabled\": true, \"admin_channels\": [\"*\"]}
},
\"server\": \”http://192.168.3.134:8091\”,
\"동기화\":
함수 (doc, oldDoc) {
if (doc.type == \"ticket\") {
채널(doc._id);
var ownerName = doc.owner.substring(doc.owner.indexOf(\":\") + 1);
console.log(doc.owner);
console.log(doc._id);
콘솔 로그(소유자 이름);
access([doc.owner], doc._id);
}
}
}
}
}
문서 속성을 사용하여 채널을 동적으로 만들고 채널에 대한 액세스 권한을 부여할 수 있습니다.
데이터 라우팅: http://developer.couchbase.com…
데이터 유효성 검사: http://developer.couchbase.com…
액세스 함수는 사용자 이름을 첫 번째 매개변수로, 채널 이름을 두 번째 매개변수로 사용합니다.
다음과 같은 스키마를 가진 문서가 있는 경우:
{
\"_id\": \"123\",
\"type\": \"주문\",
\"customer_id\": \"ali\"
}
동기화 기능에는 다음이 포함될 수 있습니다:
function(doc, oldDoc) {
if (doc.type == \"order\") {
채널(doc._id);
access(doc.customer_id, doc._id);
}
}
여기서는 \"123이라는 채널에 문서를 삽입하고 사용자 ali에게 채널 123에 대한 액세스 권한을 부여합니다\"라고 말합니다.
역할을 사용하여 사용자에게 특정 역할을 할당하고 채널에 대한 역할 액세스 권한을 부여할 수도 있습니다.
안녕하세요 Nic, 다시 한 번 멋진 튜토리얼입니다. 저는 클라우드 기반 솔루션을 완성하기 위해 이 튜토리얼과 couchbase 포럼의 다른 튜토리얼도 따라하고 있습니다. 명확한 지침 덕분에 이 솔루션을 빠르고 쉽게 실행할 수 있었습니다. 페이스 북을 통해 사용자 인증 통합을 살펴보고 있는데, 많은 프레임 워크를 사용하지만 이온이 아닌 수많은 예가 있습니다.
이 샘플 앱을 Couchbase 동기화 게이트웨이 API와 통합해 보세요:
https://github.com/nraboy/ng-c…
네, 그게 제가 사용한 것입니다. 오늘 저녁에 무언가를 시작하고 실행했습니다. 문제가 발생한 곳은 동기화 게이트웨이 구성 json 파일이었습니다. 동기화를 시작하고 실행하려면 *에서 요청을 수락하도록 cors를 설정해야 했고 동기화 섹션을 아직 제대로 설정하지 못했지만 Facebook 액세스 토큰이 수락되고 일부 문서가 동기화되는 것을 볼 수 있습니다. 이번 주말에 더 많은 독서를하고 다음 주에 솔루션을 올바르게 실행할 시간이 있어야하며,이 경우 동기화 구성 또는 cors 구성의 적절한 예에 대한 조언은 매우 도움이 될 것입니다.
튜토리얼을 제공해 주셔서 감사합니다.
카우치베이스 동기화 게이트웨이가 로컬 컴퓨터에서 작동합니까 아니면 글로벌 서버가 필요합니다.
로컬에서 동기화 게이트웨이를 사용하여 앱을 프로토타입으로 만들 수 있지만 실제 기기를 사용하기 시작하면 원격 서버를 사용해야 하며, 그렇지 않으면 기기에 연결할 수 없을 것입니다.
안녕하세요 닉 나는 당신의 튜토리얼을 따르고, 나는 소파베이스 서버에 데이터를 삽입 할 때 다음과 같은 문제에 직면합니다.
이 오류가 무엇을 의미하는지 잘 모르겠지만 항상 동기화 게이트웨이 REST API를 통해 문서를 삽입해야 합니다(http://developer.couchbase.com... 그렇지 않으면 수정본 및 액세스 규칙이 만들어지지 않고 풀 복제를 시도할 때 복제 알고리즘이 엉망이 됩니다.
기기 없이 앱을 테스트할 때 동기화 게이트웨이도 제대로 작동하지 않습니다.
또한 4984 및 4985 포트를 전 세계적으로 액세스하도록 만드는 것과 동일한 방식으로 로컬 시스템 포트 8091에 전 세계적으로 액세스하지만 이러한 포트 (4984,4985)는 전 세계적으로 액세스하지 않습니다.
안녕 닉
기기 없이 앱을 테스트할 때 동기화 게이트웨이도 제대로 작동하지 않습니다.
또한 4984 및 4985 포트를 전 세계적으로 액세스하도록 만드는 것과 동일한 방식으로 로컬 시스템 포트 8091에 전 세계적으로 액세스하지만 이러한 포트 (4984,4985)는 전 세계적으로 액세스하지 않습니다.
안녕하세요 닉,
이제 동기화 게이트웨이가 작동하고 데이터가 서버에 복제되는 튜토리얼에 감사드립니다.
멋지네요!
안녕하세요 닉,
카우치베이스 + 아이오닉을 사용하여 사용자 이름과 비밀번호로 로그인 기능을 구현하려고하는데 튜토리얼을 알려주시겠습니까?
여기서부터 시작할까요?
http://developer.couchbase.com…
안녕하세요 닉 ,
하지만 깃허브에 있고 로그인 및 가입 기능을 사용하는 앱의 링크를 제공 할 수 있다면 정말 도움이됩니다 !!!.
현재 GitHub에는 이에 대한 Ionic 데모가 없습니다. 원하신다면 PhoneGap 버전을 살펴볼 수 있습니다:
https://github.com/couchbasela…
시도해 보신 내용을 공유해 주시면 더 도움이 될 것 같고 이를 바탕으로 도움을 드릴 수 있을 것 같습니다.
안녕하세요 닉 ,
할 일 앱에서 \"작업 항목\"을 업데이트하고 싶은데 문서를 업데이트하는 쿼리를 알려주시겠습니까?
업데이트도큐먼트 메서드를 호출할 수 있습니다:
https://github.com/couchbasela…
updateDocument(documentId, documentRevision, jsonDocument);
안녕하세요 닉 ,
링크 주셔서 감사합니다 .updateDocument 함수가 내 로컬 데이터베이스 문서 (모바일 데이터베이스)를 업데이트하고 있습니다.
그러나 서버에 업데이트를 푸시하지 않습니다. 동기화 게이트웨이를 사용하여 내 응용 프로그램에서 CreateDocument 및 삭제 기능이 제대로 작동하고 Couchbase 서버 동기화도 동기화 게이트웨이를 통해 제대로 작동합니다. 그러나 업데이트를 사용하는 동안 서버 로그에 스크린 샷과 같이 오류가 표시되고 있습니다.
저 좀 도와주실 수 있나요?
확실히 하기 위해 문서가 실제로 로컬에서 업데이트되나요? 복제가 되지 않을 뿐이지요?
최고,
여기에 있는 티켓을 열었습니다:
https://github.com/couchbase/s…
라비 동기화 기능을 게시할 수 있나요? (형식이 유지되는 깃허브 요점이나 다른 곳에 게시하는 것이 이상적입니다.)
이 대화는 여기로 옮겨졌습니다: https://forums.couchbase.com/t…
안녕하세요, 트라운입니다,
"에서 동기화 파일을 공유합니다.https://forums.couchbase.com/t...\" 링크 말씀하신 대로 .
또한 동기화 게이트웨이 파일에서 \"공용 채널\"을 사용했지만 동일한 문제 \"403 잘못된 사용자\"가 발생합니다.
이 문제에 대해 안내해 주시거나 튜토리얼을 안내해 주시겠습니까?
대화에 게시할 수 있나요? https://forums.couchbase.com/t… ?
안녕하세요, 트라운입니다,
링크에 동기화 기능을 게시합니다 \"https://forums.couchbase.com/t…\” .
또한 \"공용 채널\" 동기화 게이트웨이 파일을 사용했지만 동일한 문제인 \"403 잘못된 사용자\"가 발생했습니다.
이 문제에 대해 안내해 주시거나 튜토리얼을 알려주세요...
안녕하세요 여러분, 특히 Nic, 게시 한 좋은 기사를 축하합니다. CouchDB와 Couchbase를 교환하고 있지만 사용자 이름과 비밀번호 (HTTP 방식)로 복제를 할 수 없습니다.
기본 로그인(사용자, 패스)에서 복제하기 전에 무엇을 해야 하나요?
…
todoDatabase.replicate (\"all\", \"http://192.168.0.11:4984/todos\", true) .then (function (result) {
todoDatabase.replicate (\"http://192.168.0.11:4984/todos\", \"all\", true) .then (function (result) {
…
영어가 서툴러서 죄송합니다.
Tks!!!
안녕하세요 @disqus_2gt0DNVITS:disqus,
인증은 이 글의 범위를 벗어나므로 포럼에서 스레드를 시작해 주시겠어요?
https://forums.couchbase.com
최고,
안녕하세요 닉,
사용자 이름과 비밀번호를 사용하여 로그인 및 가입 기능을 구현하려고합니다. 소파베이스 라이트 + 아이오닉 , 이 주제에 대해 안내해 주시겠습니까?
로그인 및 가입은 이 특정 블로그 게시물의 범위를 벗어나므로 질문은 포럼으로 가져가세요:
https://forums.couchbase.com/
최고,
안녕하세요 Nick, 지침을 따랐고 코드가 작동했지만 동기화 게이트웨이에서 앱으로 DB를 동기화하는 방법을 여전히 모릅니다. 동기화 게이트웨이 URL을 입력했는데 결과는 다음과 같습니다:
{\"committed_update_seq\":1,\"compact_running\":false,\"db_name\":\"todos\",\"disk_format_version\":0,\"instance_start_time\":1463023463886566,\"purge_seq\":0,\"state\":\"온라인\",\"update_seq\":1}. 빈 DB처럼 보입니다.
동기화 게이트웨이에서 레코드 데이터를 생성하고 앱에 동기화하는 방법을 알려주시겠습니까? 감사합니다.
이렇게 하면 동기화 프로세스가 시작됩니다:
실제로 동기화 게이트웨이 또는 카우치베이스 서버에 직접 저장하지 않습니다. 로컬에 저장하고 변경 사항이 동기화됩니다.
저에게 공유한 것 외에 다른 로그가 있나요?
답변 주셔서 감사합니다. 로그에 표시된 URL을 변경했습니다:
리소스를 로드하지 못했습니다. http://127.0.0.1:4984/todos/
오류 -> null app.js:86
(익명 기능)
리소스를 로드하지 못했습니다. http://127.0.0.1:4984/_replicate
86행 주변의 코드 덩어리는 무엇인가요?
이미 사용 중인 주소라는 오류가 계속 발생합니다. 어떤 IP가 작동하는지 어떻게 알 수 있나요? 검색을 많이 해봤지만 해결책을 찾을 수 없었습니다.
어느 시점에 이 메시지가 표시되나요? 디바이스에서 이 메시지가 표시되나요? 터미널에서? 웹 브라우저에서? 정보가 많을수록 더 잘 도와드릴 수 있습니다.
최고,
터미널에서 이 명령을 실행합니다:
/경로/대상/동기화 게이트웨이/빈/sync_게이트웨이 /경로/대상/프로젝트/동기화 게이트웨이-config.json
사용 후 제대로 중지하지 않으면 동기화 게이트웨이 서비스가 계속 포트를 차지하게 됩니다. 이 경우 프로세스를 수동으로 종료해야 하며 이는 운영 체제에 따라 다를 수 있습니다.
최고,
해당 명령을 처음 실행할 때 이미 사용 중인 주소라는 오류가 발생합니다. 그리고 다른 서비스에서 열려 있는 포트가 없는지 확인했습니다.
블로그 게시물에서 발췌한 내용입니다: \"또한 위 기능에 나열된 IP는 시뮬레이터와 로컬 호스트 컴퓨터 간의 통신을 허용한 IP입니다. 사용자에 따라 다를 수 있으며 약간의 조사가 필요할 수 있습니다."
이 대사를 이해하지 못하겠습니다. 제가 뭔가 놓친 것 같습니다.
Genymotion을 사용하기 때문에 시뮬레이터에서 로컬호스트를 사용하여 동기화 게이트웨이에 연결할 수 없습니다. 그래서 고유 IP 주소를 사용하고 있습니다. 동기화 게이트웨이와 카우치베이스 서버가 같은 컴퓨터에서 실행되는 경우 로컬호스트를 사용하게 됩니다.
주소 충돌이 발생하는 경우 이 게시물과 관련이 없는 것 같으므로 포럼에 게시하는 것이 좋습니다.
최고,