Giter Site home page Giter Site logo

vahidhedayati / grails-wschat-plugin Goto Github PK

View Code? Open in Web Editor NEW
22.0 3.0 10.0 1.75 MB

Grails websocket chat Plugin provides a multi-chat room add-on to an existing grails based site. provides: Private Messaging/WebRTC/Offline PM + room booking/reservations. Websocket TicTactoe. Add Live Chat to your Grails application

Home Page: http://grails.org/plugin/wschat

License: Apache License 2.0

Groovy 74.38% CSS 6.62% JavaScript 18.78% Java 0.22%

grails-wschat-plugin's Introduction

wschat

Grails websocket chat Plugin provides a multi-chat room add-on to an existing grails based site/application.

Videos on youtube:
  1. Video: grails app running wschat 0.14 part1

  2. Video: grails app running wschat 0.14 part2

  3. Video: Client/Server Messaging part 1. Earlier version focus on backend control of socket messages. So the backend of your application. Override a service for this. Explained in links further below.

  4. Video: Client/Server Messaging part 2 (Messages via websockets to frontend). In short update frontend via websocket callbacks.

  5. Video: 1.12 Chat room booking/reservations

  6. Video: 1.22 Multiple login with same Chat user and TicTacToe

  7. Video 1.23 Add Live chat to your grails application

  8. Video 1.23-SNAPSHOT1 Live chat Logs BOT Artificial Intelligence and more

  9. Video 1.24 Chat BOT now working in chat rooms, returning responses and banning/kicking users

  10. Video 1.25 LiveChat (1 room multiple users with 1 admin interacting with all)

  11. Video 3.0.6 1.27 LiveChat monitoring and changing live chat style/colours

  12. Video 3.0.9 Spring security

Grails wschat release/feature summary:
3.0.6/1.27 	- Major tidyup removed most ajax processing besides popup pages. 
			  Added css/internationlisation customisation
			  
3.0.5/1.26	- Tidy up with new look and new feature to monitor Live Chat requests
3.0.4/1.25  - Live Chat Many users to 1 admin (Video 10).

3.0.3/1.24  - ChatBot and badWords added to the main chat room

3.0.3/1.23  - Live Chat feature added as part of the plugin(watch video 7)

3.0.3/1.21  - Websocket TicTacToe game added (Watch video 6)

3.0.3/1.20  - Multiple login with same user but must be different rooms - removal of dbSupport check

1.18 -  Mediastreaming enabled but has not worked for me 
   
1.17  - Websocket -> WebRTC File sharing peer2peer available -  
  
1.12  - Chat room bookings for multiple participants
   
1.0+  - Supports WebRTC currently only on Chrome Canary.

0.19+ - Supports webcam tested  on chrome/firefox.

Admin can:  kick/Ban (for specified time period)
Users can create profiles define details and upload photos.
Chat rooms can be created in Config.groovy +/ DB once logged in using UI.

You can websocket :
	send files / use webRTC technology to have video chat or share screen
	play Tictactoe / noughts + crosses
	Live chat - set up a client easily and monitor live chats
	Configure chat bookings / invite external attendees (emails)

grails-wschat-plugin's People

Contributors

vahidhedayati avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

grails-wschat-plugin's Issues

db config for this plugin?

Sorry I'm an amateur. What did i do wrong? get these results and my users cant log into chat room.
I suspect I must change the default persistence in the datasource.groovy, but couldn't find docs on that. Looked at videos too.

Running Grails application
Error |
2015-08-13 16:35:48,817 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_block_list drop constraint FK_9mr7kcajd5s9kssgjfkbtt9g8 if exists
Error |
2015-08-13 16:35:48,818 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_BLOCK_LIST" not found; SQL statement:
alter table chat_block_list drop constraint FK_9mr7kcajd5s9kssgjfkbtt9g8 if exists [42102-176]
Error |
2015-08-13 16:35:48,819 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_booking_invites drop constraint FK_c41fedy0sbd7ajnlrokhptddw if exists
Error |
2015-08-13 16:35:48,819 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_BOOKING_INVITES" not found; SQL statement:
alter table chat_booking_invites drop constraint FK_c41fedy0sbd7ajnlrokhptddw if exists [42102-176]
Error |
2015-08-13 16:35:48,819 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_customer_booking drop constraint FK_s68rfd701egw2g96ykfj8p8if if exists
Error |
2015-08-13 16:35:48,819 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_CUSTOMER_BOOKING" not found; SQL statement:
alter table chat_customer_booking drop constraint FK_s68rfd701egw2g96ykfj8p8if if exists [42102-176]
Error |
2015-08-13 16:35:48,819 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_friend_list drop constraint FK_d19nsbacgga45i4427nmgl23v if exists
Error |
2015-08-13 16:35:48,820 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_FRIEND_LIST" not found; SQL statement:
alter table chat_friend_list drop constraint FK_d19nsbacgga45i4427nmgl23v if exists [42102-176]
Error |
2015-08-13 16:35:48,820 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_message drop constraint FK_g8rjdj81flqqu1w9077u6sbj0 if exists
Error |
2015-08-13 16:35:48,820 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_MESSAGE" not found; SQL statement:
alter table chat_message drop constraint FK_g8rjdj81flqqu1w9077u6sbj0 if exists [42102-176]
Error |
2015-08-13 16:35:48,820 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_user drop constraint FK_i99bvxvgtx7d1ocgbqjt9wrlv if exists
Error |
2015-08-13 16:35:48,820 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_USER" not found; SQL statement:
alter table chat_user drop constraint FK_i99bvxvgtx7d1ocgbqjt9wrlv if exists [42102-176]
Error |
2015-08-13 16:35:48,821 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_user drop constraint FK_5owi4i4i3cegtbeevkt2ua2ty if exists
Error |
2015-08-13 16:35:48,821 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_USER" not found; SQL statement:
alter table chat_user drop constraint FK_5owi4i4i3cegtbeevkt2ua2ty if exists [42102-176]
Error |
2015-08-13 16:35:48,821 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_user drop constraint FK_fuw7fq86933dkg2rcx4dylrii if exists
Error |
2015-08-13 16:35:48,821 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_USER" not found; SQL statement:
alter table chat_user drop constraint FK_fuw7fq86933dkg2rcx4dylrii if exists [42102-176]
Error |
2015-08-13 16:35:48,821 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_user_pics drop constraint FK_gfncij0kudcsfmgax6t9rhc0t if exists
Error |
2015-08-13 16:35:48,822 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_USER_PICS" not found; SQL statement:
alter table chat_user_pics drop constraint FK_gfncij0kudcsfmgax6t9rhc0t if exists [42102-176]
Error |
2015-08-13 16:35:48,822 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table chat_user_profile drop constraint FK_tjq957gketyppaj3m9jo0cy67 if exists
Error |
2015-08-13 16:35:48,822 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "CHAT_USER_PROFILE" not found; SQL statement:
alter table chat_user_profile drop constraint FK_tjq957gketyppaj3m9jo0cy67 if exists [42102-176]
Error |
2015-08-13 16:35:48,822 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - HHH000389: Unsuccessful: alter table off_line_message drop constraint FK_kwf7yp5m3d9l6evalx4nndtdb if exists
Error |
2015-08-13 16:35:48,822 [localhost-startStop-1] ERROR hbm2ddl.SchemaExport - Table "OFF_LINE_MESSAGE" not found; SQL statement:
alter table off_line_message drop constraint FK_kwf7yp5m3d9l6evalx4nndtdb if exists [42102-176]
|Server running. Browse to http://localhost:8080/chat

WSCHAT error accessing

Hi,
i've download your testapp for grails 2.4.4 but i don't find the version of wschat so idecided to put wschat1.31 on buildconfig after running it started but when i go to myapp:
http://localhost:8080/testwschat/wsChat i put a name and choose a room
but it open and give me and error immediately:

Error DOH
user1 disconnecting from server DOH
image

and there is no log in console.
Any idea ??
Tks
Windows 7
GGts 364
grails 244
jdk 1.7

Concurrent Modification Exception

Hi,
I use this plugin and the "Concurrent Modification Exception" is thrown when i create a Session, disconnect, and create it again. The exception happens in the "sendUserList" method, i think it happens because when it is iterating to send all the user that a user has disconnected, someone enters the room and the map is updated with the new user while it is iterating. Even if the Set is set as synchronized, the iterator is not, so the problem happens.

Peer-to-Peer WebRTC Videochat for two front end users

I want to enable users of my web-app to video-chat with each other (one-to-one chat) via your plugin.

I thought about using a unique room-name for each face-to-face chat. However, it would be great to enable WebRTC Chat automatically after connecting to the room.

Is this possible currently?

Can not run the application ... Gives the compiler error like below JRE 1.7.0_75 Grails 2.3.5

Compilation error: startup failed:
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\controllers\grails\plugin\wschat\WsChatController.groovy: 4: unable to resolve class org.grails.plugins.web.taglib.ApplicationTagLib
@ line 4, column 1.
import org.grails.plugins.web.taglib.ApplicationTagLib
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\WsChatConfService.groovy: 4: unable to resolve class grails.core.GrailsApplication
@ line 4, column 1.
import grails.core.GrailsApplication
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\WsChatConfService.groovy: 5: unable to resolve class grails.core.support.GrailsApplicationAware
@ line 5, column 1.
import grails.core.support.GrailsApplicationAware
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\client\WsChatClientService.groovy: 8: unable to resolve class org.grails.web.json.JSONObject
@ line 8, column 1.
import org.grails.web.json.JSONObject
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\client\WsClientProcessService.groovy: 6: unable to resolve class org.grails.web.json.JSONObject
@ line 6, column 1.
import org.grails.web.json.JSONObject
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\client\WsClientProcessService.groovy: 5: unable to resolve class org.grails.web.json.JSONArray
@ line 5, column 1.
import org.grails.web.json.JSONArray
^
C:\Users\admin\Documents\workspace-sts-3.6.4.RELEASE\GrailProject\grails-app\services\grails\plugin\wschat\users\WsChatBookingService.groovy: 14: unable to resolve class org.grails.plugins.web.taglib.ApplicationTagLib
@ line 14, column 1.
import org.grails.plugins.web.taglib.ApplicationTagLib
^
7 errors

BuildConfig.groovy class

dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
     runtime 'mysql:mysql-connector-java:5.1.27'
     compile "org.grails.plugins:wschat:1.18"
    // runtime 'org.postgresql:postgresql:9.3-1100-jdbc41'
}

plugins {
    // plugins for the build system only
    build ":tomcat:7.0.50"

    // plugins for the compile step
    compile ":scaffolding:2.0.1"
    compile ':cache:1.1.1'
    compile ':wschat:1.18'

    // plugins needed at runtime but not for compilation
    runtime ":hibernate:3.6.10.7" // or ":hibernate4:4.1.11.6"
    runtime ":database-migration:1.3.8"
    runtime ":jquery:1.10.2.2"
    runtime ":resources:1.2.1"
    // Uncomment these (or add new ones) to enable additional resources capabilities
    //runtime ":zipped-resources:1.0.1"
    //runtime ":cached-resources:1.1"
    //runtime ":yui-minify-resources:0.1.5"
}

chatbox overlapping

Hi, I'm a coding rookie, thanks for this plugin, my grails version is 2.4.3, plugin version is 1.2.5.
I want to use the private message function, a man can receive many private message.
But when the man want to reply message, the chatboxes' position are overlapping.
I don't know how to fix it.
image 2

monitorliveChat not work after deployment

hi...i bring some issue again :)

i test before deploy to server...in localhost run without any error...

but after deployment.. i get this error after trying to open this page..

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="layout" content="main" />
        <g:set var="entityName" value="${message(code: 'monitoring.chat.label')}" />
        <title><g:message code="default.list.label" args="[entityName]"/></title>

    </head>
    <body>
        <div class="body">
            <div class="contentbar"><h1>${entityName}</h1></div>

            <div class="leftbottombar"></div>

            <div class="cuttedbluebartop"></div>

            <div class="rightbottombar"></div>

            <div class="contentbox">
                <div class="transDetail"><g:message code="default.list.label" args="[entityName]"/></div>
                <g:if test="${flash.message}">
                    <div class="message">${flash.message}</div>
                </g:if>

                <br><br>

                <chat:monitorliveChat user="${name}" roomName="admin"/>

            </div>
        </div>
    </body>
</html>

java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
        at sun.nio.ch.IOUtil.read(IOUtil.java:197)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
        at org.apache.tomcat.util.net.NioChannel.read(NioChannel.java:137)
        at org.apache.coyote.http11.upgrade.NioServletInputStream.fillReadBuffer(NioServletInputStream.java:136)
        at org.apache.coyote.http11.upgrade.NioServletInputStream.doRead(NioServletInputStream.java:80)
        at org.apache.coyote.http11.upgrade.AbstractServletInputStream.read(AbstractServletInputStream.java:124)
        at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:51)
        at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:203)
        at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198)
        at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)

i dont think its because RequestMap , because after i received Email..

Dear V,
                        A live chat request has been made 11_11_2015_00_30
                        ----------------------------------------------------------------------------
                        null
                        Controller: null
                        Action: null
                        They are logged into room1 with the id of DOS58TO7U .
                        ----------------------------------------------------------------------------
                        Please can you go to:

                        http://www.ryobest.com/wsChat/joinLiveChat?roomName=room1&username=Admin
                        Where the user is waiting for your help

this link http://www.ryobest.com/wsChat/joinLiveChat?roomName=room1&username=Admin work...and i can start chat or send message..

admin menu page status

I have installed the plugin to grails 2.4, and configured it to run without security.

When I go to the admin menu page, there are a few links, but it doesn't seem that it is functional.
Here is the URL that i am using:
http://localhost:8080/myapp/wsChat/adminMenu

Here are the items that I see:
Admin Options
DB Console
View Users
Create Conference

What is strange is that the html does not have any head/body/ tags in the dom of the admin page.

Is this how to get to admin page, or is there a different URL that we should use?

Thanks for your hard work!

Table 'chat_room_list' doesn't exist

I am using grails-2.3.5 and tomcat:7.0.55. But I am using Database Migration Plugin to create table in database. So I am not able to create a table 'chat_room_list' doesn't exist. Here is my full logs:-

Table 'chat_room_list' doesn't exist. Stacktrace follows:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'chat_room_list' doesn't exist
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
at org.grails.datastore.gorm.GormStaticApi.methodMissing(GormStaticApi.groovy:104)
at grails.plugin.wschat.rooms.WsChatRoomService.$tt__returnRoom(WsChatRoomService.groovy:27)
at grails.plugin.wschat.WsChatController.index(WsChatController.groovy:30)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

Please help me. Thanks in advance

cannot install wschat:3.0.3

hi... i am trying to install websocket chat.
i am using grails 3.0.5..
like this..

compile "org.grails.plugins:wschat:3.0.3"

but i get this error when run-app

Total time: 3.967 secs
| Error Could not resolve all dependencies for configuration ':testRuntime'. Type 'gradle dependencies' for more information

what must i do?

Multiple room at the same time

Hi,
Is there a way to have an user logged into multiple rooms at the same time?

When I try, the following message appears: "${username} is already loggged in elsewhere, action denied".

Thank you!

Production websocket url problem

Hi

I try to use this plugin in production but there is a problem :

WebSocket connection to 'ws://myapp.cloudapp.net/myapp/WsChatEndpoint/' failed: Error during WebSocket handshake: Unexpected response code: 404
wschat-ac58e935523f5b266b80d011c011e99d.js:39 WebSocket is already in CLOSING or CLOSED state.

My url is juste myapp.cloudapp.net without the app name (myapp).

I think this line is the problem :

var webSocket=new WebSocket("ws://${hostname}/${meta(name:'app.name')}/WsChatEndpoint/${room}");

var webSocket=new WebSocket("ws://${hostname}/${meta(name:'app.name')}/WsChatEndpoint/${room}");

May you add a groovy variable like
wschat.removeAppName=true

I am not able to install v3.0.10 under Grails 3.1.1

Stacktrace:

BUILD SUCCESSFUL

Total time: 2.688 secs
Download https://repo.grails.org/grails/core/org/grails/plugins/wschat/3.0.11/wschat-3.0.11.pom
| Running application...

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':compileGroovy'.

    org/grails/datastore/gorm/GormEntity$Trait$FieldHelper

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    | Error Failed to start server (Use --stacktrace to see the full trace)
    | Running application...

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':compileGroovy'.

    org/grails/datastore/gorm/GormEntity$Trait$FieldHelper

  • Try:
    Run with --info or --debug option to get more log output.

  • Exception is:
    org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':compileGroovy'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
    at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
    at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
    at org.gradle.internal.Factories$1.create(Factories.java:22)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
    at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
    at org.gradle.util.Swapper.swap(Swapper.java:38)
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    Caused by: java.lang.NoClassDefFoundError: org/grails/datastore/gorm/GormEntity$Trait$FieldHelper
    at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:164)
    at org.gradle.api.internal.tasks.compile.ApiGroovyCompiler.execute(ApiGroovyCompiler.java:52)
    at org.gradle.api.internal.tasks.compile.daemon.CompilerDaemonServer.execute(CompilerDaemonServer.java:53)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:360)
    ... 2 more
    Caused by: java.lang.ClassNotFoundException: org.grails.datastore.gorm.GormEntity$Trait$FieldHelper
    ... 8 more

Secure Connection to Websocket required for WebRTC in Chrome 47 or newer

As of Chrome 47, HTTPS is required for accessing getUserMedia. However, when starting Grails in https mode, the following error message appears, when accessing wsChat (3.0.12):

Mixed Content: The page at 'https://..../wsChat/authChat' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://.../WsChatEndpoint/wschat'. This request has been blocked; this endpoint must be available over WSS.(anonymous function) @ authChat:633
authChat:633 Uncaught SecurityError: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

I would recommend a configuration flag to enable connections through WSS or even better: recognize, if grails started in https or in http mode and configure the protocol of the WebSocket automatically.

Thank you in advance.

disconnecting from server... When i runn my app in Prod Mode

Hi,I'm trying to use this plugin, with grails 2.5.0, it looks fine when i run the app in development mode, but when i try to run in Production mode, it doesn't work, hope some one can help.

Intellji Log:
| Error javax.websocket.DeploymentException: The HTTP response from the server [HTTP/1.1 404 Not Found
] did not permit the HTTP upgrade to WebSocket
| Error at org.apache.tomcat.websocket.WsWebSocketContainer.parseStatus(WsWebSocketContainer.java:597)
| Error at org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:581)
| Error at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:307)
| Error at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:166)
| Error at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:187)

captura de pantalla de 2017-02-25 12 04 48

My settings

BuildConfig.grovey

plugins {
// plugins for the build system only
build ":tomcat:7.0.55.2" // or ":tomcat:8.0.20"

    // plugins for the compile step
    compile ":scaffolding:2.1.2"
    compile ':cache:1.1.8'
    compile ":asset-pipeline:2.1.5"
    compile ":wschat:1.31"

    // plugins needed at runtime but not for compilation
    runtime ":hibernate4:4.3.8.1" // or ":hibernate:3.6.10.18"
    runtime ":database-migration:1.4.0"
    runtime ":jquery:1.11.1"

    // Uncomment these to enable additional asset-pipeline capabilities
    //compile ":sass-asset-pipeline:1.9.0"
    //compile ":less-asset-pipeline:1.10.0"
    //compile ":coffee-asset-pipeline:1.8.0"
    //compile ":handlebars-asset-pipeline:1.3.0.3"
}

Config.grovy

wschat.enableSecurity='true'

grails.plugin.springsecurity.userLookup.userDomainClassName = 'grails.plugin.wschat.ChatAuth'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'grails.plugin.wschat.ChatAuthChatRole'
grails.plugin.springsecurity.authority.className = 'grails.plugin.wschat.ChatRole'
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/error': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/shutdown': ['permitAll'],
'/assets/': ['permitAll'],
'/
/js/': ['permitAll'],
'/
/css/': ['permitAll'],
'/
/images/': ['permitAll'],
'/
/favicon.ico': ['permitAll'],
'/wsChat/': ['permitAll'],
'/wsChatAdmin/
': ['permitAll'],
'/wsCamEndpoint/': ['permitAll'],
'/wsChatEndpoint/
': ['permitAll'],
'/wsChatFileEndpoint/': ['permitAll'],
'/TicTacToeServer/
': ['permitAll'],
'/wsCamEndpoint': ['permitAll'],
'/wsChatEndpoint': ['permitAll'],
'/wsChatFileEndpoint': ['permitAll'],
'/TicTacToeServer': ['permitAll'],
'/dbconsole/': ['permitAll'],
'/ChatClientEndpoint/
': ['permitAll'],
'/WsChatClientEndpoint/**': ['permitAll'],
'/ChatClientEndpoint': ['permitAll'],
'/WsChatClientEndpoint': ['permitAll']
]

grails.plugin.springsecurity.securityConfigType = "Annotation"

//Para el chat
//https://github.com/vahidhedayati/grails-wschat-plugin/wiki/Config.groovy

wschat.defaultperm='user'

/*

  • To disable default login page set following
  • session.wschatuser must be set and now simply
    */
    wschat.disable.login = "yes"

wschat.removeAppName=no

/* DB Booking Date

  • used for comparing booked room date against now
    */
    wschat.db.booking ?: "yyyy-MM-dd HH:mm:ss"

/*

  • This is the most important configuration
  • in my current version the hostname is being defined by tomcat start up setenv.sh
  • In my tomcat setenv.sh I have
  • HOSTNAME=$(hostname)
  • JAVA_OPTS="$JAVA_OPTS -DSERVERURL=$HOSTNAME"
  • Now as per below the hostname is getting set to this value
  • if not defined wschat will default it localhost:8080

*/
wschat.hostname="localhost:8080"

Thanks

Object Casting Exception

I am using wschat:1.26 and getting this error
I have created three ChatRoomList object in bootstrap and when I am hittinghttp://127.0.0.1:8080/myProject/wsChat/chat then this error occurred

Cannot cast object '[grails.plugin.wschat.ChatRoomList : 1, grails.plugin.wschat.ChatRoomList : 2, grails.plugin.wschat.ChatRoomList : 3]' with class 'java.util.ArrayList' to class 'grails.plugin.wschat.ChatRoomList' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: grails.plugin.wschat.ChatRoomList(grails.plugin.wschat.ChatRoomList, grails.plugin.wschat.ChatRoomList, grails.plugin.wschat.ChatRoomList). Stacktrace follows:
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[grails.plugin.wschat.ChatRoomList : 1, grails.plugin.wschat.ChatRoomList : 2, grails.plugin.wschat.ChatRoomList : 3]' with class 'java.util.ArrayList' to class 'grails.plugin.wschat.ChatRoomList' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: grails.plugin.wschat.ChatRoomList(grails.plugin.wschat.ChatRoomList, grails.plugin.wschat.ChatRoomList, grails.plugin.wschat.ChatRoomList)
at grails.plugin.wschat.rooms.WsChatRoomService.$tt__returnRoom(WsChatRoomService.groovy:27)
at grails.plugin.wschat.WsChatController.chat(WsChatController.groovy:39)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

grails runtime exception

Chat not works

Hi

I would like to use this chat.
I have installed this plugin, and add all configs lines like the documentation.

at localhost:8080/wsChat/chat
There is this message :

Error.... 
moni disconnecting from server... 

And in chrome console :
WebSocket connection to 'ws://localhost:8080/myapp/WsChatEndpoint/boulangers' failed: Error during WebSocket handshake: Unexpected response code: 404
wschat.js:775 WebSocket is already in CLOSING or CLOSED state.

Have you an idea ?
Thank you

viewusers paginationParams

Hi, I set over 10 user in Bootstrap.groovy, and open the the "view users" page.
When I click page2 to change page,
the console has error message "could not resolve property: null of: grails.plugin.wschat.ChatUser".
It seems some params in searchBean is null, how can I fix it?

private message prolem

Hi, in version 1.31, I find a problem in private message.
My username is "user01", and I send private message "hey" to username "admin", the result in "user01" should be "user01:hey", but the screenshot is
pm1 31

In the previous version 1.26, the result is correct as below
pm1 26

How can I solve this problem?

wschat3.0.4, have erros on the console

dependency
compile "org.grails.plugins:wschat:3.0.4"

but when i visit http://localhost:8080/wschat,have erros on the console:

| Running application...
objc[25094]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
Grails application running at http://localhost:8080 in environment: development
ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Unique index or primary key violation: "UK_84OX4JBM5KCJ8E0VPQPV82C5T_INDEX_8 ON PUBLIC.CHAT_PERMISSIONS(NAME) VALUES ( /* key:1 / 32, 0, TIMESTAMP '2015-11-02 14:39:02.64', TIMESTAMP '2015-11-02 14:39:02.64', 'user')"; SQL statement:
insert into chat_permissions (id, version, date_created, last_updated, name) values (null, ?, ?, ?, ?) [23505-176]
org.springframework.dao.DuplicateKeyException: Hibernate operation: could not execute statement; SQL [n/a]; Unique index or primary key violation: "UK_84OX4JBM5KCJ8E0VPQPV82C5T_INDEX_8 ON PUBLIC.CHAT_PERMISSIONS(NAME) VALUES ( /
key:1 / 32, 0, TIMESTAMP '2015-11-02 14:39:02.64', TIMESTAMP '2015-11-02 14:39:02.64', 'user')"; SQL statement:
insert into chat_permissions (id, version, date_created, last_updated, name) values (null, ?, ?, ?, ?) [23505-176]; nested exception is org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "UK_84OX4JBM5KCJ8E0VPQPV82C5T_INDEX_8 ON PUBLIC.CHAT_PERMISSIONS(NAME) VALUES ( /
key:1 _/ 32, 0, TIMESTAMP '2015-11-02 14:39:02.64', TIMESTAMP '2015-11-02 14:39:02.64', 'user')"; SQL statement:
insert into chat_permissions (id, version, date_created, last_updated, name) values (null, ?, ?, ?, ?) [23505-176]
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:239)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.grails.orm.hibernate.GrailsHibernateTemplate.convertJdbcAccessException(GrailsHibernateTemplate.java:623)
at org.grails.orm.hibernate.GrailsHibernateTemplate.convertHibernateAccessException(GrailsHibernateTemplate.java:611)
at org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:202)
at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:142)
at org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:112)
at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.performSave(AbstractHibernateGormInstanceApi.groovy:254)
at org.grails.orm.hibernate.AbstractHibernateGormInstanceApi.save(AbstractHibernateGormInstanceApi.groovy:179)
at org.grails.datastore.gorm.GormInstanceApi.save(GormInstanceApi.groovy:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:71)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:76)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:112)
at org.grails.datastore.gorm.GormEntity$Trait$Helper$save$3.call(Unknown Source)
at grails.plugin.wschat.ChatPermissions.save(ChatPermissions.groovy)
at grails.plugin.wschat.ChatPermissions.save(ChatPermissions.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1210)
at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1123)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:919)
at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:902)
at org.grails.datastore.gorm.GormStaticApi.internalFindOrCreate(GormStaticApi.groovy:681)
at org.grails.datastore.gorm.GormStaticApi.findOrSaveWhere(GormStaticApi.groovy:672)
at org.grails.datastore.gorm.GormStaticApi$findOrSaveWhere.call(Unknown Source)
at org.grails.datastore.gorm.GormEntity$Trait$Helper.findOrSaveWhere(GormEntity.groovy:690)
at org.grails.datastore.gorm.GormEntity$Trait$Helper$findOrSaveWhere$1.call(Unknown Source)
at grails.plugin.wschat.ChatPermissions.findOrSaveWhere(ChatPermissions.groovy)
at grails.plugin.wschat.ChatPermissions$findOrSaveWhere.call(Unknown Source)
at grails.plugin.wschat.auth.WsChatAuthService.$tt__addUser(WsChatAuthService.groovy:46)
at grails.plugin.wschat.auth.WsChatAuthService$_addUser_closure2.doCall(WsChatAuthService.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
at groovy.lang.Closure.call(Closure.java:426)
at groovy.lang.Closure.call(Closure.java:442)
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90)
at grails.plugin.wschat.auth.WsChatAuthService.addUser(WsChatAuthService.groovy)
at grails.plugin.wschat.auth.WsChatAuthService.$tt__validateLogin(WsChatAuthService.groovy:68)
at grails.plugin.wschat.auth.WsChatAuthService$_validateLogin_closure4.doCall(WsChatAuthService.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
at groovy.lang.Closure.call(Closure.java:426)
at groovy.lang.Closure.call(Closure.java:442)
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90)
at grails.plugin.wschat.auth.WsChatAuthService.validateLogin(WsChatAuthService.groovy)
at grails.plugin.wschat.auth.WsChatAuthService$validateLogin$2.callCurrent(Unknown Source)
at grails.plugin.wschat.auth.WsChatAuthService.$tt__connectUser(WsChatAuthService.groovy:158)
at grails.plugin.wschat.auth.WsChatAuthService$connectUser_closure9.doCall(WsChatAuthService.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
at groovy.lang.Closure.call(Closure.java:426)
at groovy.lang.Closure.call(Closure.java:442)
at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:133)
at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90)
at grails.plugin.wschat.auth.WsChatAuthService.connectUser(WsChatAuthService.groovy)
at grails.plugin.wschat.auth.WsChatAuthService.connectUser(WsChatAuthService.groovy)
at grails.plugin.wschat.auth.WsChatAuthService$connectUser$0.call(Unknown Source)
at grails.plugin.wschat.ChatUtils.verifyAction(ChatUtils.groovy:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:922)
at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1259)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1212)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
at grails.plugin.wschat.WsChatEndpoint.handleMessage(WsChatEndpoint.groovy:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1426)
at org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(PojoMessageHandlerWholeBase.java:80)
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:393)
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:494)
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:289)
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130)
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:60)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:203)
at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198)
at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1526)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1482)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.h2.jdbc.JdbcSQLException: Unique index or primary key violation: "UK_84OX4JBM5KCJ8E0VPQPV82C5T_INDEX_8 ON PUBLIC.CHAT_PERMISSIONS(NAME) VALUES ( /
key:1 */ 32, 0, TIMESTAMP '2015-11-02 14:39:02.64', TIMESTAMP '2015-11-02 14:39:02.64', 'user')"; SQL statement:
insert into chat_permissions (id, version, date_created, last_updated, name) values (null, ?, ?, ?, ?) [23505-176]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.