Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / СокетСервер с учётом пользователей / 7 сообщений из 7, страница 1 из 1
03.02.2016, 12:11
    #39161794
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
Здраствуйте.

Вот нащёл в сети простенький примерчик сокет сервера:

Код: php
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.
set_time_limit(0);
	
	$host = "148.251.95.199";
	$port = 4096;
	
	if(extension_loaded('sockets')) echo "WebSockets OK";
    else echo "WebSockets UNAVAILABLE";

	$socket = socket_create(AF_INET, SOCK_STREAM, 0);

	$result = socket_bind($socket, $host, $port);

	$result = socket_listen($socket, 3);

	$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

	$input = socket_read($spawn, 1024) or die("Could not read input\n");
	$input = trim($input);
	echo "Client Message : ".$input."
";
	$output = strrev($input) ."
";
	socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n");

	socket_close($spawn);
	socket_close($socket);



Но немогу стото найти как на php при подключении сохраняять адрес с которого подключились
чтоб когда нужно отсылать им данные.

Кто нибудь может проиллюстрировать как это должно выглядить???
...
Рейтинг: 0 / 0
03.02.2016, 13:02
    #39161894
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
так пойдём с начала.

у меня есть домен на хосте. открываю там подомен. кладу на поддомен файлик socketServer.php c кодом из первого поста.

теперь пытаюсь связаться с ним через свой js Клиент вот его код
Код: javascript
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.
window.onload = function()
{
	var label = document.getElementById("status");
	var message = document.getElementById("message");
	var btnSend = document.getElementById("send");
	var btnStop = document.getElementById("stop");
	
	var socket = new WebSocket("ws://auction.weblaboratory.info/socketServer.php");
	
	socket.onopen = function(event){
		label.innerHTML = "Соединились c сервером " + socket.url;
	};
	socket.onclose = function(event){
		label.innerHTML = "Соединение закрыто";
		
		var code = event.code;
		var reason = event.reason;
		var wasClean = event.wasClean;
		
		alert("" + wasClean + ", "  + reason + ", " + code);
		
		if(wasClean)
		{
			label.innerHTML = "Соединение закрыто корректно!";
		}
		else
		{
			label.innertHTML = "Соединение закрыто с ошибкой! Причина" + reason + " Код " + code;
		}
	};
	
	socket.onerror = function(event){
		console.log("error");
	};
	
	
    socket.onmessage = function(event){
		if(typeof event.data === "string")
		{
			label.innerHTML = event.data;
		}
	};
	
	btnSend.onclick = function(event) {
		if(socket.readyState === WebSocket.OPEN)
		{
			socket.send(message.value);
		}
	};
	
	btnStop.onclick = function() {
		if(socket.readyState === WebSocket.OPEN)
		{
			socket.close();
		}
	};
}; 



но соединение моментально закрывается с кодом ошибки 1006

что у меня неправельно со стороны сервера? Что поравить или вызывать надо както по другому!??
...
Рейтинг: 0 / 0
03.02.2016, 22:26
    #39162465
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
...
Рейтинг: 0 / 0
03.02.2016, 23:27
    #39162477
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
SharuPoNemnogu,

Не совсем мой случай.

Но вот это строка var jsonSocket = new WebSocket("ws://ip:7379/.json");

указывается не файл а папка?

Как мне правельно устроить сокет на PHP?
...
Рейтинг: 0 / 0
04.02.2016, 08:52
    #39162598
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
В сети нащёл вот такой ответ

авторОказалось, это фича, а не баг. В коде (websocket.c):

if (cmd_is_subscribe(cmd)) {
r->keep_alive = 1;
}

Изменение этого параметра решило часть проблем

а где это фаил находится? На сервере?
и Что там должно быть 1 или 0?
...
Рейтинг: 0 / 0
04.02.2016, 09:24
    #39162622
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
AreostarВ сети нащёл вот такой ответ
эм.. а я разве не тоже самое скинул?

какой то сайт
гугла транслейт
Кстати, нынешний официальной версии интерфейса WebSockets есть ошибка, когда после успешного открытым немедленно закрыли , в результате чего в запросе не может быть получен позже, но, к счастью кто-то проблема решена , , но еще не слились в официальном мастера. Если вы хотите использовать обычные WebSockets, вы можете использовать эту временную Git: https://github.com/dcosta72/webdis или вручную изменить websocket.c затем скомпилировать:


p.s. Темы то зачем плодить в разных разделах.
...
Рейтинг: 0 / 0
04.02.2016, 15:06
    #39163036
Areostar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
СокетСервер с учётом пользователей
SharuPoNemnogu,

тоесть надо скомпелить и заменить расширение для PHP?

хорошо попробую. аолько вот чем компелить?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / СокетСервер с учётом пользователей / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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