electron/docs-translations/ko/api/protocol.md
2015-08-25 22:17:01 +09:00

5.5 KiB

protocol

protocol 모듈은 이미 있는 프로토콜의 동작을 가로채거나 새로운 프로토콜을 만들 수 있는 기능을 제공합니다.

다음 예제는 file:// 프로토콜과 같은 일을 하는 커스텀 프로토콜을 설정합니다:

var app = require('app');
var path = require('path');

app.on('ready', function() {
    var protocol = require('protocol');
    protocol.registerFileProtocol('atom', function(request, callback) {
      var url = request.url.substr(7);
      callback({path: path.normalize(__dirname + '/' + url)});
    }, function (error) {
      if (error)
        console.error('Failed to register protocol')
    });
});

알림: 이 모듈은 ready 이벤트가 호출된 이후에만 사용할 수 있습니다.

protocol.registerStandardSchemes(schemes)

  • schemes Array - 표준 스킴으로 등록할 커스텀 스킴 리스트

표준 스킴의 형식은 RFC 3986 일반 URI 구문 표준을 따릅니다. 이 형식은 file:filesystem:을 포함합니다.

protocol.registerFileProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme에 파일을 응답으로 보내는 프로토콜을 등록합니다. handlerrequestscheme와 함께 생성될 때 handler(request, callback) 형식으로 호출됩니다. completionscheme가 성공적으로 등록되었을 때 completion(null) 형식으로 호출되고 등록에 실패했을 땐 completion(error) 형식으로 에러 내용을 담아 호출됩니다.

request를 처리할 때 반드시 파일 경로 또는 path 속성을 포함하는 객체를 인자에 포함하여 callback을 호출해야 합니다. 예: callback(filePath) 또는 callback({path: filePath}).

만약 callback이 아무 인자도 없이 호출되거나 숫자나 error 프로퍼티를 가진 객체가 인자로 전달될 경우 request는 지정한 error 코드(숫자)를 출력합니다. 사용할 수 있는 에러 코드는 다음 링크에서 확인할 수 있습니다: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h

기본적으로 스킴은 http:와 같이 처리됩니다. file:과 같이 "일반적인 URI 문법"과는 다르게 인식되는 프로토콜은 protocol.registerStandardSchemes을 사용하여 표준 스킴으로 처리되도록 할 수 있습니다.

protocol.registerBufferProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

schemeBuffer를 응답으로 보내는 프로토콜을 등록합니다. 반드시 Buffer 또는 data, mimeType, chart 속성을 포함한 객체 중 하나를 인자에 포함하여 callback을 호출해야 합니다.

예제:

protocol.registerBufferProtocol('atom', function(request, callback) {
  callback({mimeType: 'text/html', data: new Buffer('<h5>Response</h5>')});
}, function (error) {
  if (error)
    console.error('Failed to register protocol')
});

protocol.registerStringProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme문자열를 응답으로 보내는 프로토콜을 등록합니다. 반드시 문자열 또는 data, mimeType, chart 속성을 포함한 객체 중 하나를 인자에 포함하여 callback을 호출해야 합니다.

protocol.registerHttpProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme에 HTTP 요청을 응답으로 보내는 프로토콜을 등록합니다. 반드시 url, method, referer, session 속성을 포함하는 객체를 인자에 포함하여 callback을 호출해야 합니다.

기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 싶으면 sessionnull로 지정해야 합니다.

protocol.unregisterProtocol(scheme[, completion])

  • scheme String
  • completion Function

scheme의 커스텀 프로토콜 등록을 해제합니다.

protocol.isProtocolHandled(scheme, callback)

  • scheme String
  • callback Function

scheme에 동작(handler)이 등록되어 있는지 여부를 확인합니다. callback으로 결과(boolean)가 반환됩니다.

protocol.interceptFileProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme 프로토콜을 가로채고 handler를 파일 전송에 대한 새로운 동작으로 사용합니다.

protocol.interceptStringProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme 프로토콜을 가로채고 handler를 문자열 전송에 대한 새로운 동작으로 사용합니다.

protocol.interceptBufferProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme 프로토콜을 가로채고 handlerBuffer 전송에 대한 새로운 동작으로 사용합니다.

protocol.interceptHttpProtocol(scheme, handler[, completion])

  • scheme String
  • handler Function
  • completion Function

scheme 프로토콜을 가로채고 handler를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 사용합니다.

protocol.uninterceptProtocol(scheme[, completion])

  • scheme String
  • completion Function

가로챈 scheme를 삭제하고 기본 핸들러로 복구합니다.