객체웹소켓
WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 브라우저와 서버 사이에 중단 없는 연결을 설정하고 실시간 양방향 데이터 전송을 실현할 수 있으며 모든 형식의 데이터 전송을 지원할 수 있습니다. fibjs에서 WebSocket 지원 모듈은 WebSocket 서버 및 클라이언트 개발을 실현할 수 있는 해당 API 인터페이스를 제공합니다.
WebSocket 지원 모듈은 WebSocket 프로토콜의 구현일 뿐이며 HTTP 프로토콜 위에서 작동해야 합니다. 서버 측에서는 업그레이드 기능을 통해 HTTP 요청을 WebSocket 연결로 변환할 수 있으며, 클라이언트 측에서는 WebSocket 프로토콜의 URL을 통해 연결될 서버 주소를 지정해야 합니다.
WebSocket 서버 시작의 예:
1
2
3
4
5
6
7
8
9
10
11var ws = require('ws');
var http = require('http');
var svr = new http.Server(80, {
'/ws': ws.upgrade(conn => {
conn.onmessage = e => {
conn.send('fibjs:' + e.data);
};
})
});
svr.start();
클라이언트에서 위 서버에 대한 연결을 설정하는 예:
1
2
3
4
5
6
7
8
9
10
11
12var ws = require("ws");
var conn = new ws.Socket("ws://127.0.0.1/ws");
// emit open event
conn.onopen = () => {
console.log("websocket connected");
conn.send("hi");
};
// emit close event
conn.onmessage = evt => {
console.log("websocket receive: " + evt.data);
};
상속관계
건설자
WebSocket
웹소켓 생성자
1
2
3new WebSocket(String url,
String protocol = "",
String origin = "");
호출 매개변수:
- url: 문자열, 연결된 서버를 지정합니다.
- protocol: 문자열, 핸드셰이크 프로토콜을 지정합니다. 기본값은 ""입니다.
- origin: 문자열, 핸드셰이크 중 시뮬레이션 소스를 지정합니다. 기본값은 ""입니다.
웹소켓 생성자
1
2new WebSocket(String url,
Object opts);
호출 매개변수:
- url: 문자열, 연결된 서버를 지정합니다.
- opts: 객체, 연결 옵션, 기본값은 {}입니다.
opts에는 다음과 같이 지원되는 요청에 대한 추가 옵션이 포함되어 있습니다.
1
2
3
4
5
6
7
8{
"protocol": "", // specify the sub-protocol, default is ""
"origin": "", // specify the origin, default is ""
"perMessageDeflate": false, // specify whether to enable permessage-deflate, default is false
"maxPayload": 67108864, // specify the max payload size, default is 64MB
"httpClient": hc, // specify the http client, default is null, use the global http client
"headers": // specify the http headers, default is {}
}
정적 속성
defaultMaxListeners
정수, 기본 전역 최대 리스너 수
1static Integer WebSocket.defaultMaxListeners;
구성원 속성
url
문자열, 현재 객체가 연결된 서버를 쿼리합니다.
1readonly String WebSocket.url;
protocol
문자열, 현재 개체 연결의 프로토콜을 쿼리합니다.
1readonly String WebSocket.protocol;
origin
문자열, 현재 개체 연결의 소스를 쿼리합니다.
1readonly String WebSocket.origin;
readyState
정수, 현재 개체의 연결 상태를 쿼리합니다.ws
1readonly Integer WebSocket.readyState;
onopen
함수, 쿼리 및 바인드 연결 성공 이벤트. on("open", func);
1Function WebSocket.onopen;
onmessage
상대방으로부터 메시지를 수신하는 함수, 쿼리 및 바인드 이벤트. on("message", func);
1Function WebSocket.onmessage;
onclose
함수, 쿼리 및 바인딩 연결 종료 이벤트(on("close", func);와 동일)
1Function WebSocket.onclose;
onerror
오류 발생 시 함수, 쿼리 및 바인드 이벤트. on("error", func);
1Function WebSocket.onerror;
멤버 함수
close
현재 연결을 닫습니다. 이 작업은 상대방에게 CLOSE 패킷을 보내고 상대방의 응답을 기다립니다.
1
2WebSocket.close(Integer code = 1000,
String reason = "");
호출 매개변수:
- code: 정수, 종료 코드를 지정합니다. 허용되는 값은 3000-4999 또는 1000이며 기본값은 1000입니다.
- reason: 문자열, 종료 이유를 지정하며 기본값은 ""입니다.
send
상대방에게 문자 보내기
1WebSocket.send(String data);
호출 매개변수:
- data: 문자열, 전송할 텍스트를 지정합니다.
상대방에게 바이너리 데이터 조각 보내기
1WebSocket.send(Buffer data);
호출 매개변수:
- data:Buffer, 전송된 바이너리 데이터를 지정합니다.
ref
fibjs 프로세스가 종료되지 않도록 유지하고 객체 바인딩 중에 fibjs 프로세스가 종료되지 않도록 방지
1WebSocket WebSocket.ref();
결과 반환:
- WebSocket, 현재 객체를 반환합니다.
unref
fibjs 프로세스 종료를 허용합니다. 객체 바인딩 중에 fibjs 프로세스가 종료되도록 허용합니다.
1WebSocket WebSocket.unref();
결과 반환:
- WebSocket, 현재 객체를 반환합니다.
on
이벤트 핸들러를 객체에 바인딩
1
2Object WebSocket.on(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체에 바인딩
1Object WebSocket.on(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
addListener
이벤트 핸들러를 객체에 바인딩
1
2Object WebSocket.addListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체에 바인딩
1Object WebSocket.addListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object WebSocket.prependListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object WebSocket.prependListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
once
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1
2Object WebSocket.once(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.
1Object WebSocket.once(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
prependOnceListener
이벤트 핸들러를 객체의 원점에 바인딩
1
2Object WebSocket.prependOnceListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
이벤트 핸들러를 객체의 원점에 바인딩
1Object WebSocket.prependOnceListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
off
객체 처리 대기열에서 기능 할당 취소
1
2Object WebSocket.off(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열의 모든 기능 취소
1Object WebSocket.off(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열에서 기능 할당 취소
1Object WebSocket.off(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
removeListener
객체 처리 대기열에서 기능 할당 취소
1
2Object WebSocket.removeListener(String ev,
Function func);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
- func: 함수, 이벤트 처리 함수를 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열의 모든 기능 취소
1Object WebSocket.removeListener(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체 처리 대기열에서 기능 할당 취소
1Object WebSocket.removeListener(Object map);
호출 매개변수:
- map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
removeAllListeners
객체의 처리 대기열에서 모든 이벤트에 대한 모든 리스너를 취소합니다. 이벤트가 지정된 경우 지정된 이벤트에 대한 모든 리스너를 제거합니다.
1Object WebSocket.removeAllListeners(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
객체의 처리 대기열에서 모든 이벤트에 대한 모든 리스너를 취소합니다. 이벤트가 지정된 경우 지정된 이벤트에 대한 모든 리스너를 제거합니다.
1Object WebSocket.removeAllListeners(Array evs = []);
호출 매개변수:
- evs: 배열, 이벤트 이름 지정
결과 반환:
- Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.
setMaxListeners
호환성만을 위한 리스너 수의 기본 제한
1WebSocket.setMaxListeners(Integer n);
호출 매개변수:
- n: 정수, 이벤트 수를 지정합니다.
getMaxListeners
호환성만을 위해 기본 제한 수의 리스너를 가져옵니다.
1Integer WebSocket.getMaxListeners();
결과 반환:
- Integer, 기본 제한 수량을 반환합니다.
listeners
객체의 지정된 이벤트에 대한 리스너 배열을 쿼리합니다.
1Array WebSocket.listeners(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Array, 지정된 이벤트에 대한 리스너 배열을 반환합니다.
listenerCount
객체의 지정된 이벤트에 대한 리스너 수를 쿼리합니다.
1Integer WebSocket.listenerCount(String ev);
호출 매개변수:
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Integer, 지정된 이벤트에 대한 리스너 수를 반환합니다.
객체의 지정된 이벤트에 대한 리스너 수를 쿼리합니다.
1
2Integer WebSocket.listenerCount(Value o,
String ev);
호출 매개변수:
- o: 값, 쿼리 개체를 지정합니다.
- ev: 문자열, 이벤트 이름을 지정합니다.
결과 반환:
- Integer, 지정된 이벤트에 대한 리스너 수를 반환합니다.
eventNames
쿼리 리스너 이벤트 이름
1Array WebSocket.eventNames();
결과 반환:
- Array, 이벤트 이름의 배열을 반환합니다.
emit
이벤트를 적극적으로 트리거
1
2Boolean WebSocket.emit(String ev,
...args);
호출 매개변수:
- ev: 문자열, 이벤트 이름
- args: ..., 이벤트 매개변수가 이벤트 처리 함수에 전달됩니다.
결과 반환:
- Boolean, 이벤트 트리거 상태를 반환하고, 응답 이벤트가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
toString
객체의 문자열 표현을 반환하며 일반적으로 "[Native Object]"를 반환하며 객체 자체의 특성에 따라 다시 구현될 수 있습니다.
1String WebSocket.toString();
결과 반환:
- String, 객체의 문자열 표현을 반환합니다.
toJSON
객체의 JSON 형식 표현을 반환하며 일반적으로 객체에 의해 정의된 읽을 수 있는 속성 컬렉션을 반환합니다.
1Value WebSocket.toJSON(String key = "");
호출 매개변수:
- key: 문자열, 사용되지 않음
결과 반환:
- Value, 직렬화 가능한 JSON을 포함하는 값을 반환합니다.