<span>{ </span> <span>"name": "NodeChatroom", </span> <span>"version": "0.0.0", </span> <span>"description": "NodeChatroom", </span> <span>"main": "app.js", </span> <span>"author": { </span> <span>"name": "Rami Sayar", </span> <span>"email": "" </span> <span>}, </span> <span>"dependencies": { </span> <span>"express": "3.4.4", </span> <span>"jade": "*", </span> <span>"socket.io": "^1.0.6", </span> <span>"stylus": "*" </span> <span>} </span><span>}</span>
마지막으로 코드는 다음과 같습니다
<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>npm install --save socket.io</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<a> 채팅 채널에서받은 메시지를 방송
<io io> socket.io는 이벤트를 보내기 위해 Emit라는 기능을 제공합니다.
<on> 채팅 채널에서받은 모든 메시지는 콜백의 방송 플래그와 함께 방출을 호출 하여이 소켓의 다른 모든 연결에 방송됩니다.
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">http<span>.createServer(app).listen(app.get('port'), function(){
</span> <span>console.log('Express server listening on port ' + app.get('port'));
</span><span>});</span></pre><div class="contentsignin">로그인 후 복사</div></div>
<code> 마지막으로 코드는 다음과 같습니다
<h2>
<to> NOSQL 데이터베이스에 메시지를 저장합니다
<should> 채팅방은 채팅 메시지를 간단한 데이터 저장소에 저장해야합니다. 일반적으로 노드의 데이터베이스에 저장하는 두 가지 방법이 있습니다. 데이터베이스 별 드라이버를 사용할 수 있거나 ORM을 사용할 수 있습니다. 이 튜토리얼에서는 MongoDB에 메시지를 저장하는 방법을 보여 드리겠습니다. 물론 PostgreSQL 또는 MySQL과 같은 SQL 데이터베이스를 포함하여 원하는 다른 데이터베이스를 사용할 수 있습니다.
<sure> 연결할 몽고이가 있는지 확인해야합니다. 타사 서비스를 사용하여 Mongohq 또는 Mongolab과 같은 MongoDB를 주최 할 수 있습니다. Azure에서 Mongolab 애드온을 사용하여 MongoDB를 만드는 방법을 확인하려면이 튜토리얼을 살펴보십시오. "앱 생성"섹션에 도달하면 읽기를 중단 할 수 있습니다. 나중에 쉽게 액세스 할 수있는 Mongolab_uri를 저장하십시오.
<created> 일단 MongoDB를 만들고 클립 보드에 복사 한 연결 정보 아래에 데이터베이스의 Mongolab_uri가 있으면 URI가 응용 프로그램에서 사용할 수 있는지 확인해야합니다. 이 URI와 같은 민감한 정보를 코드 또는 소스 코드 관리 도구의 구성 파일에 추가하는 것은 모범 사례가 아닙니다. Azure 웹 응용 프로그램의 구성 메뉴 (예 : 사용한 자습서와 같은)에서 연결 문자열 목록에 값을 추가하거나 앱 설정 목록 (이름 CustomConnstr_Mongolab_uri)에 추가 할 수 있습니다. 로컬 컴퓨터에서는 CustomConnstr_Mongolab_uri라는 이름과 URI의 값으로 환경 변수에 추가 할 수 있습니다.
다음 단계는 프로젝트에 MongoDB에 대한 지원을 추가하는 것입니다. package.json의 종속성 개체에 다음 줄을 추가하여이를 수행 할 수 있습니다. 파일에 변경 사항을 저장하십시오
</created></sure></should></to>
</h2>
<on> 솔루션 탐색기에서 프로젝트의 NPM 부분을 마우스 오른쪽 버튼으로 클릭하여 마우스 오른쪽 버튼 클릭 컨텍스트 메뉴를 공개하십시오. 컨텐츠 메뉴에서 "누락 된 패키지 설치"를 클릭하여 모듈로 사용할 수 있도록 MongoDB 패키지를 설치하십시오.
<p>
<import> 우리는 app.js에서 mongodb 클라이언트 객체를 사용할 수 있도록 해당 모듈을 가져 오려고합니다. 11 행 11 라인과 같은 첫 번째 요구 ( '') 함수 호출 후 다음 코드 줄을 추가 할 수 있습니다.<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>{
</span> <span>"name": "NodeChatroom",
</span> <span>"version": "0.0.0",
</span> <span>"description": "NodeChatroom",
</span> <span>"main": "app.js",
</span> <span>"author": {
</span> <span>"name": "Rami Sayar",
</span> <span>"email": ""
</span> <span>},
</span> <span>"dependencies": {
</span> <span>"express": "3.4.4",
</span> <span>"jade": "*",
</span> <span>"socket.io": "^1.0.6",
</span> <span>"stylus": "*"
</span> <span>}
</span><span>}</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<connect> 우리는 customconnstr_mongolab_uri 환경 변수에있는 URI를 사용하여 데이터베이스에 연결하려고합니다. 연결되면 소켓 연결에 수신 된 채팅 메시지를 삽입하려고합니다. <p>
</p>
<see> 위 코드에서 볼 수 있듯이 Process.env 객체를 사용하여 환경 변수 값을 얻습니다. 우리는 데이터베이스의 컬렉션에 들어가고 객체의 내용으로 삽입 함수를 호출합니다.
<now now> 모든 메시지가 이제 MongoDB 데이터베이스에 저장되고 있습니다. <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"><span>npm install --save socket.io</span></pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>
<the> 마지막 10 개의 메시지를 수신 한 <p>
물론, 우리는 채팅방에 가입 한 후에는 사용자가 길을 잃어 버리기를 원하지 않으므로 마지막 10 개의 메시지를 서버로 보내야하므로 최소한 컨텍스트를 제공 할 수 있습니다. 그렇게하려면 MongoDB를 연결해야합니다. 이 경우 데이터베이스 연결을 잃어 버려도 서버가 여전히 작동하도록하여 데이터베이스에 하나의 연결로 모든 소켓 코드를 래핑하는 것을 자제합니다. </p>.
<want> 우리는 또한 내 쿼리를 마지막 10 개의 메시지로 정렬하고 제한하고 싶을 것입니다. 타임 스탬프가 포함되어 있으므로 MongoDB 생성 _id를 사용합니다 (보다 확장 가능한 상황에서는 채팅 메시지에서 전용 타임 스탬프를 만들고 싶습니다. ) 그리고 우리는 결과를 10 개의 메시지로만 제한하기 위해 한계 함수를 호출합니다. <p>
<the> 우리는 mongodb의 결과를 스트리밍하여 그들이 도착하면 채팅방에 가능한 빨리 방출 할 수 있습니다.
</the></p>
<does> 위의 코드는 이전 단락에서 설명한대로 작업을 수행합니다.
<to> azure에 배포
<e> 과거 튜토리얼 (예 : 파트 2)을 따라 Azure에 재배치 할 수 있습니다.
<h2> 결론
결론적으로, 우리는 WebSockets를 통해 다른 모든 연결된 클라이언트에게 수신 된 메시지를 방송 할 수있는 채팅 시스템을 가지고 있습니다. 이 시스템은 메시지를 데이터베이스에 저장하고 마지막 10 개의 메시지를 검색하여 채팅방에 가입 한 모든 새로운 사용자에게 컨텍스트를 제공합니다.
<for> 파트 4를 계속 지켜봐주십시오!
<building> 파트 4 - 부트 스트랩이있는 채팅방 UI 구축이 여기에 있습니다. 내 트위터 계정을 따라이 기사와 다른 기사에 대한 최신 정보를 유지할 수 있습니다. </building></for>
</h2>
<n> azure 의 노드에 대한 더 많은 학습
노드에서보다 심층적 인 학습을 위해, 내 코스는 Microsoft Virtual Academy에서 제공됩니다.
<orter> 또는 유사한 노드 주제에 대한 짧은 형식의 일부 비디오 :
<p>
</p> 6 부 시리즈 : node.js 로 앱을 구축합니다
<p> 노드를 통과하는 산책 (coding4fun) </p>
<p>
</p>
이 기사는 Microsoft의 Web Dev Tech 시리즈의 일부입니다. 프로젝트 스파르타와 새로운 렌더링 엔진을 여러분과 공유하게되어 기쁩니다. MANDE.IE의 Mac, iOS, Android 또는 Windows 장치에서 무료 가상 머신 또는 원격으로 테스트를 받으십시오.<questions> node.js 전원 채팅실 웹 앱 구축에 대한 자주 묻는 질문 (FAQ)
<ensure> node.js, mongodb 및 socket.io로 구축 된 채팅실 웹 앱의 보안을 어떻게 보장 할 수 있습니까? node.js, mongodb 및 socket.io로 구축 된 대화방 웹 앱의 경우 몇 가지 보안 조치를 구현할 수 있습니다. 먼저 HTTP 대신 HTTPS를 사용하여 서버와 클라이언트 간의 모든 통신이 암호화되도록하십시오. 둘째, SQL 주입 공격을 방지하기 위해 들어오는 모든 데이터를 검증하십시오. 셋째, 사용자 인증을 위해 JWT (JSON Web Tokens)를 사용하십시오. 마지막으로, 잠재적 인 보안 취약점을 피하기 위해 모든 종속성을 최신 버전으로 정기적으로 업데이트합니다. <h2> 채팅방 웹 앱에 Node.js와 다른 데이터베이스를 통합 할 수 있습니까? </h2> <h3> 예, node.js는 node.js입니다. 매우 유연하며 다양한 데이터베이스와 통합 할 수 있습니다. MongoDB는 확장 성과 유연성으로 인해 인기있는 선택이지만 특정 요구에 따라 MySQL, PostgreSQL 또는 SQLite와 같은 다른 데이터베이스를 사용할 수도 있습니다. 데이터베이스의 선택은 응용 프로그램의 데이터 요구 사항과 데이터베이스의 특정 기능에 따라 크게 달라집니다. </h3> 더 많은 사용자를 처리하기 위해 Node.js Chatroom 웹 앱을 어떻게 확장 할 수 있습니까? <p> Node.js Chatroom 웹 앱을 사용하면로드 밸런서를 사용하여 여러 서버에 들어오는 트래픽을 배포 할 수 있습니다. Node.js의 클러스터링 모듈을 사용하여 모든 서버 포트를 공유하는 하위 프로세스를 생성 할 수도 있습니다. 또한 MongoDB와 같은 NOSQL 데이터베이스를 사용하여 더 많은 데이터를 처리 할 수있는 수평으로 쉽게 확장 할 수 있습니다. </p> 내 대화방 웹 앱에 socket.io 대신 다른 실시간 기술을 사용할 수 있습니까? <h3> </h3> 예, socket.io 대신 사용할 수있는 다른 실시간 기술이 몇 가지 있습니다. 여기에는 WebSockets, Server Sent Events (SSE) 및 Pusher 또는 Firebase와 같은 타사 서비스가 포함됩니다. 이러한 각 기술에는 고유 한 강점과 약점이 있으므로 선택은 특정 요구에 따라 달라집니다. <p> Node.js Chatroom 웹 앱이 올바르게 작동하는지 확인하려면 어떻게해야합니까? </p> 테스트 개발 프로세스의 필수 부분입니다. Node.js Chatroom 웹 앱의 경우 Mocha 또는 Jest와 같은 테스트 프레임 워크를 사용하여 단위 테스트 및 통합 테스트를 작성할 수 있습니다. API 테스트를 위해 Postman 또는 Insomnia와 같은 도구를 사용할 수도 있습니다. 또한 Cypress 또는 Puppeteer와 같은 엔드 투 엔드 테스트 도구를 사용하여 사용자 상호 작용을 시뮬레이션하고 앱이 예상대로 작동하는지 확인하십시오. <h3> Node.js Chatroom 웹 앱을 라이브 서버에 어떻게 배포 할 수 있습니까? Node.js Chatroom 웹 앱에 멀티미디어 지원을 추가 할 수 있습니까? <h3> 예, Node.js Chatroom 웹 앱에 멀티미디어 지원을 추가 할 수 있습니다. 이는 멀티미디어 파일을 저장하고 검색하기 위해 Cloudinary 또는 AWS S3와 같은 타사 서비스를 통합하여 수행 할 수 있습니다. Socket.io를 사용하여 실시간으로 멀티미디어 데이터를 보내고받을 수도 있습니다. </h3> Node.js Chatroom 웹 앱에 사용자 인증을 추가 할 수 있습니까? </h3>
<p> </p> 사용자 인증은 중요합니다. 모든 대화방 웹 앱의 기능. Node.js 앱의 경우 사용자 인증을 처리하기 위해 인기있는 미들웨어 인 Passport.js를 사용할 수 있습니다. 로컬 사용자 이름 및 비밀번호, OAUTH 및 JWT를 포함한 다양한 인증 전략을 지원합니다. 채팅방 웹 앱에 node.js와 함께 다른 프론트 엔드 프레임 워크를 사용할 수 있습니까? 백엔드 기술이며 모든 프론트 엔드 프레임 워크 또는 라이브러리에서 작업 할 수 있습니다. 자습서는 일반 HTML 및 CSS를 사용하지만 React, Angular 또는 Vue.js와 같은 프론트 엔드 프레임 워크를 사용하여보다 복잡하고 대화식 사용자 인터페이스를 구축 할 수 있습니다. <h3> Node.js Chatroom 웹에서 오류를 처리하는 방법 App? </h3> 오류 처리는 모든 웹 응용 프로그램의 중요한 부분입니다. Node.js에서는 미들웨어를 사용하여 오류를 처리 할 수 있습니다. 여기에는 오류, 요청, 응답 및 다음 네 가지 인수를 취하는 특수 함수를 만드는 것이 포함됩니다. 그런 다음이 기능을 사용하여 오류를 기록하거나 클라이언트에 오류 응답을 보내거나 사용자를 오류 페이지로 리디렉션 할 수 있습니다.</ensure></questions></orter></n></e></to></does></want></the></now></see></connect></import></p></on>
위 내용은 node.js- 강화 된 채팅룸 웹 앱 : 노드, MongoDB 및 소켓 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!