Graappler는 모든 전송에 걸쳐 일관된 단일 API를 노출하는 "comet" 연결을 위한 최소한의 서버입니다. Graappler는 현재 다음 전송을 지원합니다(각 전송에는 현재 알려진 지원 브라우저 목록 포함).
* - 일부 브라우저의 XMLHttpRequest 구현에는 예상치 못한 문제가 포함되어 있습니다(예: Android 1.6용 내장 웹 브라우저).
Grappler는 하나의 주요 개체인 Server
내보냅니다.
lib/common.js는 메시지를 기록하고 클라이언트 상태를 확인할 때 사용되는 상수가 포함된 LOG
및 STATE
개체를 내보냅니다.
LOG
개체는 다음과 같습니다.
{
INFO: 1,
WARN: 2,
ERROR: 3
}
STATE
개체는 다음과 같습니다.
{
ACCEPTED: 1, // internal use only
TEMP: 2, // internal use only
PROTO_HTTP: 4, // client is HTTP-based
PROTO_WEBSOCKET: 8 // client is WebSocket-based
}
그래플러 서버의 새 인스턴스를 만듭니다.
options
다음과 같은 기본값을 갖는 객체입니다:
{
// A callback for receiving "debug" information. It is called with two arguments: message and message level.
// Message level is one of the values in the `LOG` object.
logger: function(msg, msgLevel) {},
// A string or array of strings which denote who is allowed to connect to this grappler Server instance.
// The format of the string is: "hostname:port", "hostname", or an asterisk substituted for either the hostname
// or port, or both, to act as a wildcard.
origins: "*:*",
// An integer value in milliseconds representing the interval in which a ping is sent to an HTTP client for those
// transports that need to do so.
pingInterval: 3000,
// A storage provider used to store client objects. The default is to use 'object', a simple hash. Other available
// storage providers can be found in lib/storage. The value here is the name without the 'storage' prefix and file extension.
storage: 'object'
}
fnHandleNormalHTTP
는 들어오는 HTTP 연결에 대한 그래플러를 재정의할 수 있는 콜백입니다. 헤더가 전송되지 않으면 그래플러가 연결을 제어합니다. 이 콜백에 제공되는 인수는 http.Server
의 request
이벤트, 즉 http.ServerRequest 및 http.ServerResponse 객체와 동일합니다. 그래플러가 들어오는 모든 HTTP 연결을 자동으로 처리하도록 하되 fnAcceptClient
에 대한 콜백을 지정하려는 경우 fnHandleNormalHTTP
에 false
값을 지정해야 한다는 점에 유의해야 합니다.
fnAcceptClient
는 클라이언트가 연결되는 순간 실행되는 콜백입니다. 이 콜백의 주요 목적은 그래플러 서버에 대한 클라이언트의 추가 액세스를 즉시 거부할 수 있는 기회를 갖는 것입니다. 예를 들어, 애플리케이션은 블랙리스트를 유지 관리하거나 특정 시간 동안 x 연결 후 특정 IP를 자동으로 블랙리스트/제한할 수 있습니다. 이 콜백이 false
반환하면 연결이 자동으로 삭제되고, 그렇지 않으면 연결이 허용됩니다. 콜백은 연결을 나타내는 net.Stream
객체인 하나의 인수를 받습니다.
function(client) { }
이 이벤트는 새 클라이언트가 시스템에 성공적으로 연결될 때마다 발생합니다. client
HttpClient
의 인스턴스입니다.
function(err) { }
예상치 못한 오류가 발생할 때 발생합니다.
지정된 port
및 host
에서 수신 대기하는 서버를 시작합니다. host
생략되면 서버는 모든 IP 주소에서 수신 대기합니다.
선택적 encoding
사용하여 연결된 모든 클라이언트에 data
보냅니다.
더 이상 들어오는 연결을 수신하지 않고 기존 클라이언트 연결을 끊어 서버를 종료합니다.
그래플러에서 사용되는 또 다른 중요한 개체가 있는데, 바로 HttpClient
개체입니다. HttpClient
서버에 연결된 사용자를 나타내며 해당 사용자와 상호 작용하는 데 사용할 수 있습니다.
function() { }
클라이언트의 쓰기 버퍼가 비게 되면 발생합니다.
function() { }
클라이언트의 연결이 끊어졌을 때 발생합니다.
클라이언트의 현재 상태를 포함하는 비트 필드입니다. 유효한 비트에 대해서는 앞서 언급한 STATE
객체를 참조하세요.
클라이언트의 IP 주소입니다.
선택적 encoding
사용하여 data
클라이언트에 보냅니다. 이 함수는 전체 데이터가 커널 버퍼에 성공적으로 플러시된 경우 true
반환합니다. 그렇지 않고, 데이터 전체 또는 일부가 사용자 메모리에 대기 중인 경우 false
반환합니다. 커널 버퍼가 다시 사용 가능해지면 drain
방출됩니다.
선택적 encoding
사용하여 연결된 다른 모든 클라이언트에 data
보냅니다.
클라이언트와 서버의 연결을 강제로 끊습니다.