Are you an LLM? You can read better optimized documentation at /doc/javascript/chatting/send-message.md for this page in Markdown format
메시지 전송
이 문서에서는 VChatCloud JavaScript SDK를 사용하여 다음 유형의 메시지를 전송하는 방법을 설명합니다.
- 일반 텍스트 메시지
- 귓속말(개인 메시지)
- 파일 메시지
- 이모티콘 메시지
사전 준비
메시지 전송 기능을 사용하기 전에 채널 연결이 완료되어야 합니다. 자세한 내용은 JavaScript SDK 개요 문서를 참고하세요.
일반 메시지 전송
sendMessage
메소드를 사용하여 채팅방의 모든 사용자에게 텍스트 메시지를 전송합니다.
예제 코드
javascript
channel.sendMessage(
{
message: "안녕하세요!",
mimeType: "text"
},
function (err) {
if (err) {
console.error("메시지 전송 실패:", err);
return;
}
console.log("메시지 전송 성공");
}
);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
파라미터
파라미터 | 타입 | 설명 |
---|---|---|
message | String | 전송할 메시지 내용 |
mimeType | String | 메시지 형태 (text : 일반텍스트, file : 파일, emoji_img : 이모티콘) |
콜백 함수
- 성공 시:
err
는null
- 실패 시:
err
객체 반환
귓속말 메시지 전송
특정 사용자에게만 보이는 개인 메시지를 전송합니다.
예제 코드
javascript
channel.sendWhisper(
{
message: "안녕하세요! 개인 메시지입니다.",
receivedClientKey: "TARGET_USER_CLIENT_KEY"
},
function(err, result) {
if (err) {
console.error("귓속말 전송 실패:", err);
return;
}
console.log("귓속말 전송 성공:", result);
}
);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
파라미터
파라미터 | 타입 | 설명 |
---|---|---|
message | String | 전송할 메시지 내용 |
receivedClientKey | String | 수신자의 클라이언트 키 |
응답 데이터
성공 시 (result
객체)
속성 | 타입 | 설명 |
---|---|---|
roomId | String | 채팅방 ID |
nickName | String | 전송자의 닉네임 |
clientKey | String | 전송자의 클라이언트 키 |
message | String | 전송한 메시지 내용 |
mimeType | String | 메시지 형태 |
messageDt | String | 전송 일시 (yyyyMMddHHmmss 형식) |
messageCount | Number | 채팅방 총 메시지 수 |
receivedNickName | String | 수신자의 닉네임 |
receivedClientKey | String | 수신자의 클라이언트 키 |
grade | String | 전송자의 사용자 등급 |
실패 시 (err
객체)
속성 | 타입 | 설명 |
---|---|---|
code | Number | 에러 코드 (예: 10107) |
message | String | 에러 메시지 (예: "USER_NOT_EXISTED") |
파일 메시지 전송
채팅방에서 파일을 공유하는 기능입니다. 파일 업로드 후 메시지로 전송하여 다른 사용자들과 파일을 공유할 수 있습니다.
파일 전송 과정
파일 전송은 다음 두 단계로 진행됩니다.
- 파일 업로드: 서버에 파일을 업로드하여 고유 키 획득
- 파일은 최대 100MB까지 업로드 가능합니다.
- 파일은 7일 동안 보관되며, 이후 자동 삭제됩니다.
- 메시지 전송: 파일 정보를 포함한 메시지 전송
보안 주의사항
업로드된 파일은 파일 URL만 알고있다면 모든 사용자가 접근할 수 있습니다. 따라서 개인정보(주민등록번호, 신용카드 정보, 의료기록 등)가 포함된 파일은 절대 업로드하지 마세요.
권장사항
파일 업로드/다운로드 시에는 파일 공유 라이브러리를 사용하길 권장합니다. 이 라이브러리는 파일 업로드/다운로드 과정을 간소화하고 에러 처리를 개선한 헬퍼 함수들을 제공합니다.
1단계. 파일 업로드
- URL:
https://www.vchatcloud.com/api/openapi/saveFile
- Method: POST
- Content-Type: multipart/form-data
업로드 구현
javascript
async function uploadFile(fileInput, roomId) {
// 파일 선택 확인
if (!fileInput.files.length) {
throw new Error('파일을 선택해주세요.');
}
const file = fileInput.files[0];
// 파일 크기 검증 (100MB)
if (file.size > 100 * 1024 * 1024) {
throw new Error('파일 크기는 100MB를 초과할 수 없습니다.');
}
// FormData 생성
const formData = new FormData();
formData.append('file', file);
formData.append('roomId', roomId);
try {
const response = await fetch('https://www.vchatcloud.com/api/openapi/saveFile', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.result_cd !== 1) {
throw new Error(result.result_msg || '파일 업로드에 실패했습니다.');
}
return result.data;
} catch (error) {
console.error('파일 업로드 오류:', error);
throw error;
}
}
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
36
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
36
업로드 응답 데이터
성공 시 다음 정보를 반환합니다.
필드 | 타입 | 설명 |
---|---|---|
fileKey | String | 업로드된 파일의 고유 ID |
fileNm | String | 파일의 원본 이름 |
fileExt | String | 파일 확장자 |
fileSize | Number | 파일 크기 (바이트) |
expire | String | 만료 일자 (yyyy-MM-dd) |
2단계. 파일 메시지 전송
업로드된 파일 정보를 채팅 메시지로 전송합니다.
javascript
async function sendFileMessage(fileInput, roomId) {
try {
// 1. 파일 업로드
const fileData = await uploadFile(fileInput, roomId);
// 2. 파일 정보 구성
const fileInfo = {
id: fileData.fileKey,
name: fileData.fileNm,
type: fileData.fileExt,
size: fileData.fileSize,
expire: fileData.expire
};
// 3. 메시지 전송
channel.sendMessage(
{
message: [JSON.stringify(fileInfo)],
mimeType: "file"
},
function(err) {
if (err) {
console.error('파일 메시지 전송 실패:', err);
return;
}
console.log('파일 메시지 전송 성공');
}
);
} catch (error) {
console.error('파일 전송 오류:', error);
alert('파일 전송에 실패했습니다: ' + error.message);
}
}
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
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
이모티콘 메시지 전송
이미지 형태의 이모티콘을 전송합니다.
예제 코드
javascript
function sendEmoticon(imagePath) {
channel.sendMessage(
{
message: imagePath,
mimeType: "emoji_img"
},
function(err) {
if (err) {
console.error('이모티콘 전송 실패:', err);
return;
}
console.log('이모티콘 전송 성공');
}
);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
추가 팁
메시지 전송 최적화
- 메시지 전송 전 입력값 검증을 수행하세요.
- 파일 전송 시 파일 크기와 타입을 사전에 검증하세요.