Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / java и web-сокеты, помогите разобраться! / 6 сообщений из 6, страница 1 из 1
18.05.2015, 13:21
    #38961510
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
Здравствуйте, взял пример вот тут
Вот код самого сервера:
Код: java
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.nio.ByteBuffer;
import java.util.Collections;

import org.java_websocket.WebSocket;
import org.java_websocket.WebSocketImpl;
import org.java_websocket.drafts.Draft;
import org.java_websocket.drafts.Draft_17;
import org.java_websocket.framing.FrameBuilder;
import org.java_websocket.framing.Framedata;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

public class AutobahnServerTest extends WebSocketServer{
   private static int counter = 0;
	
	public AutobahnServerTest( int port , Draft d ) throws UnknownHostException {
		super( new InetSocketAddress( port ), Collections.singletonList( d ) );
	}
	
	public AutobahnServerTest( InetSocketAddress address, Draft d ) {
		super( address, Collections.singletonList( d ) );
	}

	@Override
	public void onOpen( WebSocket conn, ClientHandshake handshake ) {
		counter++;
		System.out.println( "///////////Opened connection number " + counter );
                
	}

	@Override
	public void onClose( WebSocket conn, int code, String reason, boolean remote ) {
		System.out.println( "closed" );
	}

	@Override
	public void onError( WebSocket conn, Exception ex ) {
		System.out.println( "Error:" );
		ex.printStackTrace();
	}

	@Override
	public void onMessage( WebSocket conn, String message ) {
		conn.send( message );
                
	}

	@Override
	public void onMessage( WebSocket conn, ByteBuffer blob ) {
		conn.send( blob );
	}

	@Override
	public void onWebsocketMessageFragment( WebSocket conn, Framedata frame ) {
		FrameBuilder builder = (FrameBuilder) frame;
		builder.setTransferemasked( false );
		conn.sendFrame( frame );
	}

	public static void main( String[] args ) throws  UnknownHostException {
		WebSocketImpl.DEBUG = false;
		int port;
		try {
			port = new Integer( args[ 0 ] );
		} catch ( Exception e ) {
			System.out.println( "No port specified. Defaulting to 1122" );
			port = 1122;
		}
		new AutobahnServerTest( port, new Draft_17() ).start();
	}
}


Алгоритм работы сервера такой, он получает сообщение от клиента и отвечает этому же клиенту его же сообщением.
Вроде все понятно и просто, но у меня есть несколько вопросов:
Как мне отправить сообщение не обратно клиенту, а какому то определенному клиенту?
Как мне разослать одно сообщение всем клиентам?
Можно ли как то отключить определенного клиента?
Заранее большое спасибо!
...
Рейтинг: 0 / 0
18.05.2015, 14:27
    #38961586
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
VaneS Ri_laxКак мне отправить сообщение не обратно клиенту, а какому то определенному клиенту?
а ты запускал\отправлял\тестировал или по памяти пишешь?
Код: java
1.
port = new Integer( args[ 0 ] );
...
Рейтинг: 0 / 0
18.05.2015, 14:36
    #38961608
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
Petro123а ты запускал\отправлял\тестировал или по памяти пишешь?
Код: java
1.
port = new Integer( args[ 0 ] );


Конечно проверял и тестировал, запустил сервер, запускал без параметров, по этому он мне выставил порт по умолчанию, т.е. 1122.
Запустил открыл клиент в 2 браузерах, подключился, начал отправлять сообщения. Он каждому браузеру ответил именно то что тот ему написал.
...
Рейтинг: 0 / 0
18.05.2015, 14:45
    #38961622
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
VaneS Ri_lax,
Разные клиенты имеют разные IP из этого исходи и на это намекал (код не смотрел).
...
Рейтинг: 0 / 0
18.05.2015, 15:22
    #38961689
VaneS Ri_lax
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
Petro123VaneS Ri_lax,
Разные клиенты имеют разные IP из этого исходи и на это намекал (код не смотрел).
Сделал отправку вот так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public void onMessage( WebSocket conn, String message ) {
		//conn.send( message );
               
                Iterator iterator = super.connections().iterator();
                while(iterator.hasNext()){
                    WebSocket x = (WebSocket) iterator.next();
                    if(!x.getRemoteSocketAddress().equals(conn.getRemoteSocketAddress())){
                        x.send(message);
                    }
                }
         }
...
Рейтинг: 0 / 0
18.05.2015, 18:07
    #38961914
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
java и web-сокеты, помогите разобраться!
VaneS Ri_lax,
и это правильно
см почту
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / java и web-сокеты, помогите разобраться! / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]