java 프로젝트(servlet,spring 아님)를 만들고 거기에 먼저 socket.io를 사용할수 있게
환경설정을 해주자
1. pom만들기
2. pom 안에 닫히는 build 닫히는 project 사이에 사용할 라이브러리 소스를 넣어준다.
<해당소스>
1
2
3
4
5
6
7
|
<dependencies>
<dependency>
<groupId>io.socket</groupId>
<artifactId>socket.io-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
| cs |
환경설정을 마쳤으면 새로운 클래스를 만들어주자
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
37
38
39
40
41
42
|
public class SocketIOClass implements Emitter.Listener{
private io.socket.client.Socket socket = null;
public SocketIOClass() {
// TODO Auto-generated constructor stub
try {
socket = IO.socket("http://211.110.165.201:1005");
socket.connect();
socket.on("subscribe", this); //subscribe
JSONObject jobj = new JSONObject();
jobj.put("msg", "init");
jobj.put("id", "jdh1");
socket.emit("init",jobj);
} catch (Exception e) {
// TODO: handle exception
}
}
public void send(String id, String msg) throws Exception{
try {
JSONObject jobj = new JSONObject();
jobj.put("msg", msg);
jobj.put("id", id);
socket.emit("publish",jobj);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
@Override
public void call(Object... arg0) {
// TODO Auto-generated method stub
String msg = arg0[0].toString();
System.out.println("받은내용:"+msg);
}
}
| cs |
메인클래스에서 실해하기. run as 버튼을 누르면 콘솔에 실행된다.
1
2
3
4
5
6
7
8
9
|
public class Main {
public static void main(String[] args) throws Exception {
SocketIOClass s = new SocketIOClass();
s.send("jdh", "sendig");
}
}
| cs |
<실행화면>
==============여기서부터는 nodejs (visualCode로 작성) 한 코드이다. ========
(수업시간에 빠져 개념정리가 필요함 )
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
37
38
39
40
41
42
43
44
|
var express = require('express');
var router = express.Router();
//socket.io.라이브러리 ---------------
var http = require('http').createServer(function(req, res){
}).listen(1006);
var io = require("socket.io").listen(http);
io.sockets.on('connection', function(socket){
socket.on('init', function(data){
socket.join(data.id);
});
socket.on('publish', function(data){
io.sockets.emit('subscribe', {
id : String(data.id), msg : String(data.msg)
});
});
});
//127.0.0.1:3000/socket
router.get('/chat', function(req, res, next) {
res.render('chat',{});
});
var http = require('http').createServer(function(req, res){
}).listen(1005);
var io = require("socket.io").listen(http);
io.sockets.on('connection', function(socket){
socket.on('init', function(data){
socket.join(data.id);
});
socket.on('publish', function(data){
io.sockets.emit('subscribe', {
id : String(data.id), msg : String(data.msg)
});
});
});
module.exports = router;
| cs |
채팅 화면 html이다.
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
37
38
39
40
41
|
<!DOCTYPE html>
<html>
<head>
<title>채팅</title>
<link rel='stylesheet' href='/stylesheets/style.css' />
<script src="/javascripts/jquery.js"></script>
<script src="http://211.110.165.201:1005/socket.io/socket.io.js"></script>
<script>
$(document).ready(function(){
var socket = io.connect("http://211.110.165.201:1005");
socket.on('connect', function(){
//최초 접속시
socket.emit('init', {id:'jdh', msg:'hello'});
//서버에서 메세지가 오면 textarea에 표시
socket.on('subscribe', function(data){
var tmp = $('#txt_out').val();
$('#txt_out').val(data.id+","+data.msg+"\n"+tmp);
var tmp1 = $('#div_out').html();
$('#div_out').html(data.msg+"<br />"+tmp1);
});
});
$('#btn_msg').click(function(){
var txt = $('#txt_msg').val();
socket.emit('publish', {id:'jdh', msg:String(txt)});
});
});
</script>
</head>
<body>
<input type="text" id="txt_msg" />
<input type="button" id="btn_msg" value="보내기" />
<textarea rows="10" style="width:100%" id="txt_out"></textarea>
<div id="div_out"></div>
</body>
</html>
| cs |
댓글 없음:
댓글 쓰기