Node.js와 Socket.io에서 간단한 채팅을 할 수 있습니다.
14984 단어 Node.jsJavaScriptSocket.ioHTMLCSS
간단한 인터넷 채팅 실현
입문
이 글은 SLP KBIT Advent Calender 2019 16일째 글입니다.
Socket.아직 io를 이용한 개발을 하지 않았기 때문에 이번에 이런 개발을 하려고 합니다.
오래전에 만들었기 때문에 설치 과정을 좀 잊어버렸는데...
환경
・Windows10(64bit)
・Node.js : v10.15.3
준비
이 개발에서 Node.js、Socket.io 이외에 로컬 서버를 시작하기 쉬운 Express를 사용하기 때문에 설치하지 않은 사람은 아래 명령으로 설치하십시오.$ npm install express
실시
서버 구축 준비
create.jsvar express = require('express');//expressを使用
var app = express();
var http = require('http').Server(app);
const path = require('path');
const io = require('socket.io')(http);
const PORT = process.env.PORT || 4649;
app.get('/' , function(req, res){
res.sendFile(__dirname+'/chat_room/chat.html');//chat.htmlへ移動
});
io.on('connection',function(socket){
// メッセージ送信処理
socket.on('chat message', function(msg, user){
//io.emit('chat message', msg);
io.emit('chat message', {
userName: user,
message: msg
});
});
});
http.listen(PORT, function(){
console.log('server listening. Port(・v・)/:' + PORT);//PORT番ポートに接続
});
app.use(express.static(path.join(__dirname, 'chat_room')));//chat_roomディレクトリを公開
참고로 chat_룸 디렉터리에 채팅을 표시하는 html와 css 파일을 준비했기 때문에 마지막 줄에app.use(express.static(path.join(__dirname, 'chat_room')));
의 명세란 스타일에 정의된 설정입니다.(이것이 없으면 chat_room의 css를 읽지 않습니다.)
HTML 및 CSS
채팅 표시용 HTML 및 CSS 만들기
chat.html<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html charset=UTF-8">
<title>Socketテスト</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
</head>
<body>
<h1>チャットテスト(・v・)/</h1>
<!-- メッセージ入力欄 -->
<form action="#" id="chatForm">
<input id="u" autocomplete="off" placeholder="ユーザ名"/>
<input id="m" autocomplete="off" placeholder="テキスト"/>
<button>Send</button>
</form>
<hr>
<!-- メッセージの表示 -->
<ul id="messages"></ul>
<!--必須モジュール2つ-->
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
//var userName = 'test';
$(function () {
var userName = '';
// メッセージを送信する
$('form').submit(function(){
socket.emit('chat message', $('#m').val(), $('#u').val());
$('#m').val('');
return false;
});
// 受信したメッセージを表示
// ul id ="messages"の部分
socket.on('chat message', function(data){
var chat = data.userName + " 『 " + data.message + " 』";
if ((data.message != '') && (data.userName != '') ) {//空じゃない場合
$('#messages').append($('<p id="chat">').text(chat));//ユーザとテキストは前提条件
}
});
});
</script>
</body>
</html>
style.css#messages {
padding: 0.5em 1em;
margin: 2em 0;
border: solid 3px #9facd4;
}
#chat {
margin-top: 1px;
padding: 2px;
background-color: rgb(218, 246, 255);
color: #292929;
}
실제 사용
node 명령을 사용하여 서버를 시작합니다.
로컬 호스트에서 지정한 포트에 액세스하면 다음 화면이 나타납니다.
사용자 이름과 텍스트를 입력하고send를 누르면
제대로 대사 같아졌네!
2개 이상의 창을 열 때
보내기 전
발송 후
한쪽이 보내면 두 창이 모두 반영됩니다.
이렇게 하면 현지 환경에서 이야기를 나눌 수 있다.
끝내다
채팅 기능만 설치하는 것을 목표로 하기 때문에 외관은 간단해졌지만 마지막까지 할 수 있어서 다행이다.아이콘을 설치하고 싶은데 조금만 더 외관이 좋으면 진정한 채팅을 즐길 수 있을까요?
Reference
이 문제에 관하여(Node.js와 Socket.io에서 간단한 채팅을 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Reita1125/items/e0ae988563989e02667d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ npm install express
서버 구축 준비
create.js
var express = require('express');//expressを使用
var app = express();
var http = require('http').Server(app);
const path = require('path');
const io = require('socket.io')(http);
const PORT = process.env.PORT || 4649;
app.get('/' , function(req, res){
res.sendFile(__dirname+'/chat_room/chat.html');//chat.htmlへ移動
});
io.on('connection',function(socket){
// メッセージ送信処理
socket.on('chat message', function(msg, user){
//io.emit('chat message', msg);
io.emit('chat message', {
userName: user,
message: msg
});
});
});
http.listen(PORT, function(){
console.log('server listening. Port(・v・)/:' + PORT);//PORT番ポートに接続
});
app.use(express.static(path.join(__dirname, 'chat_room')));//chat_roomディレクトリを公開
참고로 chat_룸 디렉터리에 채팅을 표시하는 html와 css 파일을 준비했기 때문에 마지막 줄에app.use(express.static(path.join(__dirname, 'chat_room')));
의 명세란 스타일에 정의된 설정입니다.(이것이 없으면 chat_room의 css를 읽지 않습니다.)HTML 및 CSS
채팅 표시용 HTML 및 CSS 만들기
chat.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html charset=UTF-8">
<title>Socketテスト</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
</head>
<body>
<h1>チャットテスト(・v・)/</h1>
<!-- メッセージ入力欄 -->
<form action="#" id="chatForm">
<input id="u" autocomplete="off" placeholder="ユーザ名"/>
<input id="m" autocomplete="off" placeholder="テキスト"/>
<button>Send</button>
</form>
<hr>
<!-- メッセージの表示 -->
<ul id="messages"></ul>
<!--必須モジュール2つ-->
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
//var userName = 'test';
$(function () {
var userName = '';
// メッセージを送信する
$('form').submit(function(){
socket.emit('chat message', $('#m').val(), $('#u').val());
$('#m').val('');
return false;
});
// 受信したメッセージを表示
// ul id ="messages"の部分
socket.on('chat message', function(data){
var chat = data.userName + " 『 " + data.message + " 』";
if ((data.message != '') && (data.userName != '') ) {//空じゃない場合
$('#messages').append($('<p id="chat">').text(chat));//ユーザとテキストは前提条件
}
});
});
</script>
</body>
</html>
style.css#messages {
padding: 0.5em 1em;
margin: 2em 0;
border: solid 3px #9facd4;
}
#chat {
margin-top: 1px;
padding: 2px;
background-color: rgb(218, 246, 255);
color: #292929;
}
실제 사용
node 명령을 사용하여 서버를 시작합니다.
로컬 호스트에서 지정한 포트에 액세스하면 다음 화면이 나타납니다.
사용자 이름과 텍스트를 입력하고send를 누르면
제대로 대사 같아졌네!
2개 이상의 창을 열 때
보내기 전
발송 후
한쪽이 보내면 두 창이 모두 반영됩니다.
이렇게 하면 현지 환경에서 이야기를 나눌 수 있다.
끝내다
채팅 기능만 설치하는 것을 목표로 하기 때문에 외관은 간단해졌지만 마지막까지 할 수 있어서 다행이다.아이콘을 설치하고 싶은데 조금만 더 외관이 좋으면 진정한 채팅을 즐길 수 있을까요?
Reference
이 문제에 관하여(Node.js와 Socket.io에서 간단한 채팅을 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Reita1125/items/e0ae988563989e02667d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Node.js와 Socket.io에서 간단한 채팅을 할 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Reita1125/items/e0ae988563989e02667d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)