
xPushkin
20.10.2017
21:15:23
Ошибка не изменилась, к сожалению
Интересно почему работает до добавления в слайс, а потом не работает..

Aleksandr
20.10.2017
21:16:59
Не, ты не понимаешь. Я увы с телефона и не имею возможности исправить ручками

Google

xPushkin
20.10.2017
21:17:36

Aleksandr
20.10.2017
21:19:41
Ты ренджишь по пустому скопированному в слайсу
От того что ты в исходный добавляет, скопированный не меняется

xPushkin
20.10.2017
21:20:54
Хорошо, а если я сделаю chan и буду отправлять *Conn для обработки?

Aleksandr
20.10.2017
21:21:51
Попробуй

xPushkin
20.10.2017
21:25:36
Хм..
Осмелюсь предположить, что это баг. Этот пакет websocket является форком gorilla/websocket который якобы совместим с fasthttp.
Или у меня руки кривые

Alexander
20.10.2017
21:34:58
а если из горутины убрать бесконченый цикл?

xPushkin
20.10.2017
21:36:04
Поскольку канал не буферизованный, то горутина по-любому блокируется на <-
У меня есть подозрение, что когда handler возвращается с ним пропадает и connection.

Alexander
20.10.2017
21:38:17
есть мнение, что цикл for _, connection надо немножечко переписать. Попробуй вот так:
for i := range connections {
connection := connections[i]
// дальше делаешь как и раньше
}

Google

xPushkin
20.10.2017
21:38:21
Потому что в самом handler я могу спокойно использовать connection для отправки и получения сообщений

Alexander
20.10.2017
21:39:27
for _, connection := range connections {}
разыменовывает указатель

Alexander
20.10.2017
21:39:32
добавить проверку на nil

Alexander
20.10.2017
21:39:47
а если обращаешься через индекс, то работаешь с указателем

xPushkin
20.10.2017
21:40:12

Alexander
20.10.2017
21:41:12
попробуй сначала как я выше написал, connection получить через обращение к индексу
может и я ошибся

xPushkin
20.10.2017
21:41:20
Так, к сожалению, тоже не работает

Alexander
20.10.2017
21:46:47
что пишет?

xPushkin
20.10.2017
21:47:18
Ок, я выяснил причину
Вот так работает
Но это костыль
В общем когда handler закрывается, то пропадает и указатель
Если поставить бесконечный цикл, то указатель живёт и с ним можно работать. Сообщения из горутины отправляются.
Мда, и как теперь быть..?

Alexander
20.10.2017
21:50:14
подожди, а ты после go func ещё что-то делаешь в main?

xPushkin
20.10.2017
21:50:55
Да, слушаю http запросы. На скринах выше видно.

Google

Alexander
20.10.2017
21:52:30
мне думается, что немного неверное построена архитектура приложения
"у других ж работает" ))

xPushkin
20.10.2017
21:53:54
Раньше всё было не в main ?
Чисто для дебагинга попросили всё засунуть в main

Alexander
20.10.2017
22:08:22
аааа я понял
у тебя может быть двойной доступ к слайсу
ты и append и range делаешь одновременно
и вообще ты в горутину сюёшь не через вход функции
но если ты хочешь иметь одну и туже переменную и там и там, то норм, но тогда надо расставить rwMutex

xPushkin
20.10.2017
22:16:19
С этим разберусь, всё равно спасибо. Мне бы сейчас разобраться как сохранить *Conn.

Alexander
20.10.2017
22:16:44
что мешает внутри хэндлера сделать вызов горутины go writeMessages(conn)

Alexander
20.10.2017
22:16:56
и передавать внутрь conn

xPushkin
20.10.2017
22:18:48
Мне нужно conn сохранить так чтобы я потом мог с ним работать без хендлера. Чтобы я мог когда угодно отправлять данные. А сейчас получается, что как только возвращается handler соединение падает.

Alexander
20.10.2017
22:19:55
скинь код

xPushkin
20.10.2017
22:20:38
Так я же уже скинул..

Alexander
20.10.2017
22:20:55
скриншоты?

xPushkin
20.10.2017
22:22:20
Да. Там код 20 строчек.

Sergey
20.10.2017
22:50:16
go add_user(name,pass,w,r ) так вызываю саму функцию

Google

Alexander
21.10.2017
01:27:52
#spam

AxiS
21.10.2017
03:17:01
Да. Там код 20 строчек.
Уважай труд людей, готовых помочь. Даже 5 строк никто переписывать не будет.
В go принято скидывать код на play.golang.org

Alexander
21.10.2017
04:04:49
+1

xPushkin
21.10.2017
05:39:14

Admin
ERROR: S client not available

Eduard
21.10.2017
06:27:27
Подскажите как лучше сделать
entity
- User
game
- Room
user -> room
room -> user
import cycle not allowed
У меня получилось что юзер имеет ссылку на комнату и комната имеет список юзеров
получилась эта ошибка и я не знаю как ее решить с точки зрения архитектуры не хочется просто сливать в один пакет

Denis
21.10.2017
06:35:46
Room такая же сущность как и user
Так что им самое место быть в одном пакете

Oleg
21.10.2017
06:36:21
vim кто пользует при разработке?

?
21.10.2017
06:36:28
-

Oleg
21.10.2017
06:37:59
у кого как GoDef настроен в vim?

Vlad
21.10.2017
07:12:50

Andrey
21.10.2017
08:00:10

xPushkin
21.10.2017
08:13:58
То есть получается при каждом новом соединении создавать цикл из которого выходить при ошибке или если клиент закрывает соединение?

Olzhas
21.10.2017
08:17:57

xPushkin
21.10.2017
08:19:06
Понял. Большое спасибо за помощь.

f1nnix
21.10.2017
08:49:36
Играюсь с gorm, хочу наколхозить self-reference:
type Post struct {
ID uint `gorm:"primary_key" json:"id"`
Post *Post `json:"post" xml:"post" sql:"default:null"`
}
Колонка post_id в базе (Postgres) не создается. Пробовал различные названия поля структуры — Post, PostID, Parent (ну, вдруг какие conventions!), но успехи по-прежнему скромные.
Не подскажете, что может быть не так? Судя по issues это должно работать: https://github.com/jinzhu/gorm/issues/1233 Большое спасибо за помощь.

Google

Vlad
21.10.2017
08:50:30
так вроде горм сам создаёт id?
сейчас гляну в доку

f1nnix
21.10.2017
08:52:12
так вроде горм сам создаёт id?
Если вы про явное определение ID, то я намеренно убрал наследование от gorm.Model. У меня не работает как раз второе поле — Post, которое ссылается на себя и по идее должно создать колонку post_id.

Vlad
21.10.2017
08:52:56

Che
21.10.2017
09:43:32
/report

xPushkin
21.10.2017
09:44:54
В общем пока что вот так
Цикл прерывается когда клиент отключается

Denis
21.10.2017
09:46:49
Это конечно неудачная у тебя идея с индексом

xPushkin
21.10.2017
09:47:07
Почему?)

Denis
21.10.2017
09:47:15
От длины массива
Ну один добавится

xPushkin
21.10.2017
09:47:38
Кстати да, блин

Denis
21.10.2017
09:47:40
Длина слайса увеличится