Giter Site home page Giter Site logo

cordova-plugin-websocket-server's People

Contributors

astronomer00 avatar becvert avatar bugnano avatar motla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cordova-plugin-websocket-server's Issues

Example missing a coma

I hate to admit it but I copied the code and you are missing a comma
In this line:
'origins' : [ 'file://' ],

WS server doesn't work for me

Here is client code, that I've run on my PC

 var url = 'ws://10.0.21.222:3004';
    var socket = new WebSocket(url);
    socket.onopen = function() {
        console.info("opened");
    };

    socket.onclose = function(event) {
        if (event.wasClean) {
            console.info('closed');
        } else {
            console.info('dirty closed');
        }
    };

    socket.onmessage = function(event) {
        console.info("data" + event.data);
    };

    socket.onerror = function(error) {
        console.info("error " + error.message);
    };

Here is code that I'm running in cordova app on android:

wsserver.start(3004, {
        // WebSocket Server handlers
        'onFailure' :  function(addr, port, reason) {
            console.log('Stopped listening on %s:%d. Reason: %s', addr, port, reason);
        },
        // Other options
        'origins' : [ 'file://' ], // validates the 'Origin' HTTP Header.
        'protocols' : [ 'my-protocol-v1', 'my-protocol-v2' ], // validates the 'Sec-WebSocket-Protocol' HTTP Header.
        'tcpNoDelay' : true // enable/disable Nagle's algorithm. false by default.
    }, function onStart(addr, port) {
        console.log('Listening on %s:%d', addr, port, arguments);
    }, function onDidNotStart(reason) {
        console.log('Did not start. Reason: %s', reason);
    });

IP of my mobile device is 10.0.21.222
on mobile device (WS server) the only console message that I retrieve is:

Listening on :::3004

On my client im retriving nothing but closing event with err code 1006

Mobile device Nexus 6p android 7.1.1
Cordova v6.5.0

[iOS] Not working with Firefox client

Hi, I have problems connecting to my websocket server running on iOS 10.3.3 using any version of Firefox. I found this issue (zwopple/PocketSocket#34), made those two changes using the fork of PocketSocket used in this plugin. I compiled libPocketSocket.a from this code and replaced the version in this plugin with mine. But every time I want to use my library, with and without the modifications, I get these messages at runtime:
2017-08-28 20:17:58.817040+0200 SimpleCam[4132:2418826] -[PSWebSocketServer setTcpNoDelay:]: unrecognized selector sent to instance 0x178134b40 2017-08-28 20:17:58.817718+0200 SimpleCam[4132:2418826] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> -[PSWebSocketServer setTcpNoDelay:]: unrecognized selector sent to instance 0x178134b40
So, my question is: What do I have to do (maybe settings in Xcode?) to use my library with this Plugin? I'm using Xcode 8.3.3 on macOS 10.12.6.
BTW: my library is only 843 KB, while the one bundled with this plugin is 4,2 MB...

[iOS] "Project Name" was compiled with optimization - stepping may behave oddly; variables may not be available.

Hi.

I have been receiving the message:
[PROJECT NAME] was compiled with optimization - stepping may behave oddly; variables may not be available.

This is happening on iOS when I send a message to the websocket server. When the cordova socket server receive the message the app crash. According to my investigation the problem is due to how the libPocketSocket.a was optimized during the build process.

The same error was reported here using others libraries.

I've been using this versions:
Cordova (Cordova CLI) : 8.0.0
Cordova Platforms: ios 4.5.5
iOS Deployment Target: 10.0

Here the error, pointing to PSWebSocketDriver._initialFrame

image

I am triying to recompile PocketSocket.

Does anybody have an idea how to solve this issue?

ionic3 use it

How can i create class to use ?
Write a declarative typescript class ?

client losing network connection handling

Android WebSocket client connects to the server. User goes away from the router and loses wifi connection. He comes back, connects back to wifi, but the server doesn't connect the new client - "open" event is not fired.

I don't know if "close" event fires. Both scenarios should be considered.

To make the client connect again, the server does not need to be restarted. Restarting wifi on the tablet with the server instantly corrects the problem.

Question aside. If the client is not closed after a period of "not being actually in the network anymore", how this situation should be handled?

websocket server in ionic 2

Hello Becvert,

I'm looking for a plugin or example to run a websocket server in ionic 2, Is possible with this plugin? Do you have some example from this case?

Best regards
David

wsserver.send() not working

I have applied wsserver.send(conn,msg) in my code but it not working.I request you to give a correct code to send message from server to client

[iOS] Xcode 9 / Swift 2.x error

With Xcode 9, i cannot open a Xcode project generated with Cordova CLI.

Xcode display a message about Swift 2.x

image

Is it possible to migrate your iOS sources to Swift 3 ?

Build failed with ionic

cordova run android
ANDROID_HOME=F:\ProgrammingHandlers\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_121
:wrapper

BUILD SUCCESSFUL in 3s
1 actionable task: 1 executed
Subproject Path: CordovaLib
Starting a Gradle Daemon (subsequent builds will be faster)
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
java.lang.IllegalStateException: buildToolsVersion is not specified.
at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:645)
at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:608)
at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:605)

BUILD FAILED

Total time: 1 mins 16.991 secs
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:120)
at com.android.build.gradle.BasePlugin.lambda$createTasks$1(BasePlugin.java:603)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy16.afterEvaluate(Unknown Source)
at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:76)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$000(LifecycleProjectEvaluator.java:33)
at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:53)
at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:50)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:628)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:129)
at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
at org.gradle.initialization.DefaultGradleLauncher$1.execute(DefaultGradleLauncher.java:161)
at org.gradle.initialization.DefaultGradleLauncher$1.execute(DefaultGradleLauncher.java:158)
at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
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:47)
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.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
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.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

FAILURE: Build failed with an exception.

  • Where:
    Script 'F:\FlowAboard\SyncIonic\Synk\platforms\android\cordova-plugin-websocket-server\starter-websocket-server.gradle' line: 5

  • What went wrong:
    A problem occurred evaluating script.

Could not find method implementation() for arguments [org.java-websocket:Java-WebSocket:1.3.9] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    Error: cmd: Command failed with exit code 1 Error output:
    Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence.
    java.lang.IllegalStateException: buildToolsVersion is not specified.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:173)
    at com.android.build.gradle.BasePlugin.createAndroidTasks(BasePlugin.java:645)
    at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:608)
    at com.android.build.gradle.BasePlugin$10.call(BasePlugin.java:605)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:156)
    at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:120)
    at com.android.build.gradle.BasePlugin.lambda$createTasks$1(BasePlugin.java:603)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93)
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82)
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
    at com.sun.proxy.$Proxy16.afterEvaluate(Unknown Source)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.doConfigure(LifecycleProjectEvaluator.java:76)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.access$000(LifecycleProjectEvaluator.java:33)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:53)
    at org.gradle.configuration.project.LifecycleProjectEvaluator$1.execute(LifecycleProjectEvaluator.java:50)
    at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:50)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:628)
    at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:129)
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35)
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:60)
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:38)
    at org.gradle.initialization.DefaultGradleLauncher$1.execute(DefaultGradleLauncher.java:161)
    at org.gradle.initialization.DefaultGradleLauncher$1.execute(DefaultGradleLauncher.java:158)
    at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:56)
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:158)
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:119)
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:102)
    at org.gradle.launcher.exec.GradleBuildController.run(GradleBuildController.java:71)
    at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:41)
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
    at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:49)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:44)
    at org.gradle.tooling.internal.provider.ServicesSetupBuildActionExecuter.execute(ServicesSetupBuildActionExecuter.java:29)
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
    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:47)
    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.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)
    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.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

FAILURE: Build failed with an exception.

  • Where:
    Script 'F:\FlowAboard\SyncIonic\Synk\platforms\android\cordova-plugin-websocket-server\starter-websocket-server.gradle' line: 5

  • What went wrong:
    A problem occurred evaluating script.

Could not find method implementation() for arguments [org.java-websocket:Java-WebSocket:1.3.9] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Minimal HTTP functionality

Hello,

I was wondering if it would be possible (and how difficult) to add minimal HTTP functionality to this server.

The use case would be: to be able to get HTML files from it.

This in turn could allow your Cordova app to serve the initial files to establish a connection, say from your PC to your phone (similar to what the AirDroid app does).

I run the code on a android phone,but no effect?

android 4.3 is root

my code on android is 
document.addEventListener('deviceready', function(){
		var wsserver = cordova.plugins.wsserver;
		 wsserver.start(8082, {
		    'onFailure' :  function(addr, port, reason) {
		    		alert("onFailure");
		        console.log('Stopped listening on %s:%d. Reason: %s', addr, port, reason);
		    },
		    // WebSocket Connection handlers
		    'onOpen' : function(conn) {
		    	alert("onOpen");
		        console.log('A user connected from %s', conn.remoteAddr);
		    },
		    'onMessage' : function(conn, msg) {
		    	  alert(["onMessage",msg]);
		        console.log([conn, msg]);
		    },
		    'onClose' : function(conn, code, reason, wasClean) {
		    		alert("onClose");
		        console.log('A user disconnected from %s', conn.remoteAddr);
		    },
		    // Other options
		    'origins' : [ 'file://',"http://","*"], // validates the 'Origin' HTTP Header.
		    'protocols' : [ ], // 'my-protocol-v1', 'my-protocol-v2' validates the 'Sec-WebSocket-Protocol' HTTP Header.
		    'tcpNoDelay' : true // disables Nagle's algorithm.
		}, function onStart(addr, port) {
				 alert(["onStart",addr, port]);
		    console.log('Listening on %s:%d', addr, port);
		}, function onDidNotStart(reason) {
			  alert("onDidNotStart");
		    console.log('Did not start. Reason: %s', reason);
		});
}, false);

my client code run on windows10 x64

<title>websocket</title>
<script> var socket = new WebSocket('ws://localhost:8082');
		// 打开Socket 
		socket.onopen = function(event) { 
			console.log(event); 
			socket.send('I am the client and I\'m listening!'); 

			socket.onmessage = function(event) { 
				console.log('Client received a message',event); 
			}; 

			socket.onclose = function(event) { 
				console.log('Client notified socket has closed',event); 
			}; 
		};


	</script>
</body>

`````````````````````````````````````````````````````````````````````````````````````````````````````````````````
the websocket server listen port is 8082
ip address is 192.168.1.100

I ping the phone's ip 192.168.1.100 is connect ok!
I use telnet 192.168.1.100 8082 is connect ok;
I use nodejs tcp client code tcp.js is connect ok!

var net=require("net");
var Client = net.createConnection({host:"192.168.1.100",port:8082}, function(){
console.log("connect ok");
});

Client.on('data', function(buf){
console.log("data:"+data.toString());
});

Client.on('end', function(){
console.log("end");
});

but i use the html+js page,I can not connect ,why?

This plugin & Ionic 3

Hey folks,

I really tried everything, but I can't make it to work - and I really really need this plugin.

I tried it with window.cordova.plugins, cordova.plugins and also by declaring

declare var wsserver: any;

...but when I start it on my Android device for example - no error at all and the app keep runing, but I get no feedback from the plugin itself.

What can I do? I really have to have this plugin!!!

Thanks in advance,
Oliver

Server life cycle...

Hi just a quick question, you say 'the server stops responding when the view is terminated / destroyed', is that actual shutting down of the app? Or just when the use hits home (etc)?

Just wondering if the app is still open but the user has navigated away from it if the server will still respond? I'm trying to display info to the user via web sockets when the user has navigated away from the app and assessing my options...

Cheers

wss:// support

Does this plugin support WebSocket Secure? If so, how would one enable it? I see there's a protocols property on the configuration object, but I'm not sure what to add there to add wss (if thats even where it would be added)

Thanks

[iOS] Failed compiling

Hi,

it seams this is the only plugin around and I'm having a bad need for it, but compiling on iOS 10 gives the following error:

System.IO.IOException: The authentication or decryption has failed. ---> Mono.Security.Protocol.Tls.TlsException: The authentication or decryption has failed.
at Mono.Security.Protocol.Tls.RecordProtocol.EndReceiveRecord(IAsyncResult asyncResult)
at Mono.Security.Protocol.Tls.SslClientStream.SafeReceiveRecord(Stream s)
at Mono.Security.Protocol.Tls.SslClientStream.OnNegotiateHandshakeCallback(IAsyncResult asyncResult)
at Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback(IAsyncResult asyncResult)

Could you please share your thoughts about this issue. Do I need something else installed?

Thank you!

Error Missing Command Error

Would like to ask it as a question

When does this error occurs??
"Error "Missing Command Error""

Ran it with cordova run browser
Used you code modified like this. Thanks a lot for the plugins also.

var wsserver = cordova.plugins.wsserver;
wsserver.start(3721, {
// WebSocket Server
'onStart' : function(addr, port) {
console.log('Listening on %s:%d', addr, port);
},
'onStop' : function(addr, port) {
console.log('Stopped listening on %s:%d', addr, port);
},
// WebSocket Connection
'onOpen' : function(conn) {
/* conn: {
'uuid' : '8e176b14-a1af-70a7-3e3d-8b341977a16e',
'remoteAddr' : '192.168.1.10',
'acceptedProtocol' : 'my-protocol-v1',
'httpFields' : {...},
'resource' : '/?param1=value1&param2=value2'
} */
console.log('A user connected from %s', conn);
},
'onMessage' : function(conn, msg) {
console.log(conn, msg);
},
'onClose' : function(conn, code, reason) {
console.log('A user disconnected from %s', conn.remoteAddr);
},
'origins' : [ 'file://' ], // optional. validates the 'Origin' HTTP Header.
'protocols' : [ 'my-protocol-v1', 'my-protocol-v2' ] // optional. validates the 'Sec-WebSocket-Protocol' HTTP Header.
});

[iOS] IPv6 support

IPv6 support depends on the underlying server libraries (TooTallNate and PocketSocket).
On Android (Java) ipv4 and ipv6 stacks are supported.
PocketSocket does seem to be bound to ipv4 only. PocketSocket#50.
I did not have my apps rejected yet for this reason (as of end of October).

How to connect

How does an outside device connect to this..

all i get on starting the server is:

index.js:69 Listening on :::41574

but when i use my local ip from my network it says:
VM3493:1 WebSocket connection to 'ws://192.168.1.72:41574/' failed: Error during WebSocket handshake: Unexpected response code: 404

Unexpected response code: 403

var socket = new WebSocket("ws://localhost:8888")
it will always generate console error message: WebSocket connection to "ws://localhost:8888" failed: Unexpected response code: 403

it is under IOS, and just use README's wsserver.start(8888, ....)

Unable to connect to websocket server

Hi, I'm trying this plugin but I'm not sure why when client trying to connect, the "onOpen" function seems to not giving any response. Please guide, thank you.

Crash on disconnect between iOS server and Android client

The situation is the following:
Server: iOS cordova-plugin-websocket-server version 1.3.0
Client: Android Crosswalk version 21 (based on Chromium version 51), native WebSocket client.

The connection is made correctly, the data is sent and received correctly on both ends, but when the client disconnects (by calling connection.close() without arguments), the server crashes.

The strange part is that the server does not crash if both the server and the client are iOS (unless there was an error in my iOS to iOS testing...).

Also, as I use this plugin to implement a real-time multiplayer game, I have found a latency issue that only affects iOS (when testing both server and client on Android, the ping is around 6mS, when either the server or the client, or both run iOS, the ping is much higher, and varies continuously between 20mS and 500mS). Any idea on why this latency problem related to iOS happens?

var wsserver = cordova.plugins.wsserver; don't work

hi, i was trying to use cordova-plugin-websocket-server and i am having difficulties with:
var wsserver = cordova.plugins.wsserver;
can u help me out, i used the the README, is there any other thing i need to import or install besides the plugin?

Speed of response

I'm sending a response to a client, but until that response arrives in the client, 3-6 seconds can have passed. Is this normal?

onOpen event

Hi, i have a question. I created TCP server on my mobile device. I try to connect to them from C# TcpClient, but onOpen and onMessage events is not hitting. What I make wrong?

This is my simple C# code:

            tcpClient.Connect("192.168.43.47", 2000);                

            string str = "test";
            Stream stm = tcpClient.GetStream();

            ASCIIEncoding asen = new ASCIIEncoding();
            byte[] ba = asen.GetBytes(str);                

            //sending message
            stm.Write(ba, 0, ba.Length);

Not Working !?

I am trying to use this plugin but I don't know why, it's not working . . . Do I need to turn the wifi on or is the plugin supposed to turn wifi on automatically ?

Cant connect with socket cordova 7

App code

$scope.RUNSERVER = function () {
        var wsserver = cordova.plugins.wsserver;
       wsserver.start(3000, {
    'onFailure' :  function(addr, port, reason) {
        console.log('Stopped listening on %s:%d. Reason: %s', addr, port, reason);
    },
    'onOpen' : function(conn) {
        console.log('A user connected from %s', conn.remoteAddr);
    },
    'onMessage' : function(conn, msg) {
        console.log(conn, msg);
    },
    'onClose' : function(conn, code, reason, wasClean) {
        console.log('A user disconnected from %s', conn.remoteAddr);
    },
    tcpNoDelay : true
}, 
function onStart(addr, port) {
console.log('Listening on %s:%d', addr, port);
}, 
function onDidNotStart(reason) {
console.log('Did not start. Reason: %s', reason);
});
}
<button ng-click="RUNSERVER()">RUN</button>

I got my ip address from google using my ip.

var url = 'ws://10.0.21.222:3000';
    var socket = new WebSocket(url);
    socket.onopen = function() {
        console.info("opened");
    };

    socket.onclose = function(event) {
        if (event.wasClean) {
            console.info('closed');
        } else {
            console.info('dirty closed');
        }
    };

    socket.onmessage = function(event) {
        console.info("data" + event.data);
    };

    socket.onerror = function(error) {
        console.info("error " + error.message);
    };

This is duplicate issue of #27.
I did not get any result and any console. I did not get ip address in console also

"Listening on 0.0.0.0:8080" but client connections get automatically closed

Hi, I have some problems testing the plugin, I wish to know if any whitelist inclusion, android permission or CORS workaround or something else is needed in this case.

I'm using phonegap + cordova-plugin-websocket-server.

Server's 'onStart' gets called with address and port "0.0.0.0:8080" , but when a client tries to connect, the Websocket.onclose() callback is fired.

Chrome console shows:
WebSocket connection to 'ws://192.168.0.12:8080/' failed: Connection closed before receiving a handshake response

Also runned client.html file on the same mobile device and on a desktop pc, so a firewall filter may not be the case.

Client was tested pointing to "ws://127.0.0.1:8080/" and "ws://192.168.0.12:8080/"

wsserver.getInterfaces() returns only the mobile wireless ip 192.168.0.12.

EDIT:

I've confirmed that port 8080 on 192.168.0.12 is open.

Can you help me?

How to change the ip address?

Hi, I reviewed your plugin. It looks awesome but unfortunately I could not get it working for me.

I have a websocket opened on a remote web server so I want to use a remote ip address instead of 0.0.0.0:2000

I could not find any option to change ip address. Can you please tell that how can we perform this?

Thanks

Frame size

I try to send a JSON object with a web client inside one application, connected to the server running on another app.
With a very light JSON all is working fine.
With a very big JSON (6Mb) the client got an 1006 error (Close Event).

Did this issue comes from the implementation of Websocket inside cordova webview ? or on the server side ?

Thanks

Working sample ?

I can't seem to have the plugin working. Compiles good in a cordova sample, but server never starts.
Maybe you it is not instanciated good, as the exported module is WebSocketServer, but you call cordova.plugins.wsserver in your sample code.

Do you have a working cordova project, by any chance ?
Thx a bunch

connection failed

Hello, I would like to ask wsserver. Start is sometimes normal at first. When I forcibly shut down the application process and re-enter the app, wsserver. Start does not respond, nor does it trigger failure. I would like to ask what causes this, which makes it impossible for me to monitor whether wsserver is turned on correctly.

[iOS] PSWebSocketServer SIGTRAP exception

Hello,

I am receiving some crash logs, and I would like to investigate the issues. The following is the crash summary:

LOCATION: PSWebSocketServer.m line 770 in [PSWebSocketServer dealloc]
EXCEPTION: SIGTRAP

The PSWebSocketServer.m file is not present in the project, so I am struggling to identify the cause of the error. I am assuming that the file is generated during compilation from the WebSocketServer.swift.

Any advice?
Kind Regards

not receiving continuation frame from websocket-sharp

Hello,
I have been using this plugin in version 1.1.3 with websocket-sharp with no problems.
But the newest version cannot handle split messages. I am using WireShark to see what is being sent and here is what is being sent from client to server but does not arrive.

WebSocket Text [MASKED]

Frame 347: 1078 bytes on wire (8624 bits), 1078 bytes captured (8624 bits) on interface 0
Interface id: 0 (\Device\NPF_{AC7CCEA0-9135-4E5E-AC9C-8461828E6F6B})
Encapsulation type: Ethernet (1)
Arrival Time: Apr 12, 2017 18:59:41.034495000 Central European Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1492016381.034495000 seconds
[Time delta from previous captured frame: 0.015473000 seconds]
[Time delta from previous displayed frame: 0.020017000 seconds]
[Time since reference or first frame: 36.122217000 seconds]
Frame Number: 347
Frame Length: 1078 bytes (8624 bits)
Capture Length: 1078 bytes (8624 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp:http:websocket:data-text-lines]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: AsrockIn_34:25:35 (bc:5f:f4:34:25:35), Dst: Routerbo_0f:ef:3f (6c:3b:6b:0f:ef:3f)
Internet Protocol Version 4, Src: 10.10.112.22, Dst: 10.10.112.6
Transmission Control Protocol, Src Port: 51788, Dst Port: 53743, Seq: 278, Ack: 181, Len: 1024
Source Port: 51788
Destination Port: 53743
[Stream index: 16]
[TCP Segment Len: 1024]
Sequence number: 278 (relative sequence number)
[Next sequence number: 1302 (relative sequence number)]
Acknowledgment number: 181 (relative ack number)
Header Length: 20 bytes
Flags: 0x018 (PSH, ACK)
Window size value: 255
[Calculated window size: 65280]
[Window size scaling factor: 256]
Checksum: 0xf84a [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 345]
[The RTT to ACK the segment was: 0.020017000 seconds]
[iRTT: 0.115772000 seconds]
[Bytes in flight: 1024]
[Bytes sent since last PSH flag: 1024]
[PDU Size: 1024]
WebSocket
0... .... = Fin: False
.000 .... = Reserved: 0x0
.... 0001 = Opcode: Text (1)
1... .... = Mask: True
.111 1110 = Payload length: 126 Extended Payload Length (16 bits)
Extended Payload length (16 bits): 1016
Masking-Key: 9e39dfb2
Masked payload
Payload
Line-based text data
[truncated]{"code":1,"data":"{"id":"3d63815f4e130a632449cfb23ff10405d9e69901","nr":7,"name":"My Deviceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

WebSocket Continuation [FIN] [MASKED]

Frame 348: 2023 bytes on wire (16184 bits), 2023 bytes captured (16184 bits) on interface 0
Interface id: 0 (\Device\NPF_{AC7CCEA0-9135-4E5E-AC9C-8461828E6F6B})
Encapsulation type: Ethernet (1)
Arrival Time: Apr 12, 2017 18:59:41.034584000 Central European Daylight Time
[Time shift for this packet: 0.000000000 seconds]
Epoch Time: 1492016381.034584000 seconds
[Time delta from previous captured frame: 0.000089000 seconds]
[Time delta from previous displayed frame: 0.000089000 seconds]
[Time since reference or first frame: 36.122306000 seconds]
Frame Number: 348
Frame Length: 2023 bytes (16184 bits)
Capture Length: 2023 bytes (16184 bits)
[Frame is marked: False]
[Frame is ignored: False]
[Protocols in frame: eth:ethertype:ip:tcp:http:websocket]
[Coloring Rule Name: TCP]
[Coloring Rule String: tcp]
Ethernet II, Src: AsrockIn_34:25:35 (bc:5f:f4:34:25:35), Dst: Routerbo_0f:ef:3f (6c:3b:6b:0f:ef:3f)
Internet Protocol Version 4, Src: 10.10.112.22, Dst: 10.10.112.6
Transmission Control Protocol, Src Port: 51788, Dst Port: 53743, Seq: 1302, Ack: 181, Len: 1969
Source Port: 51788
Destination Port: 53743
[Stream index: 16]
[TCP Segment Len: 1969]
Sequence number: 1302 (relative sequence number)
[Next sequence number: 3271 (relative sequence number)]
Acknowledgment number: 181 (relative ack number)
Header Length: 20 bytes
Flags: 0x018 (PSH, ACK)
Window size value: 255
[Calculated window size: 65280]
[Window size scaling factor: 256]
Checksum: 0xf436 [unverified]
[Checksum Status: Unverified]
Urgent pointer: 0
[SEQ/ACK analysis]
[PDU Size: 1024]
[PDU Size: 945]
WebSocket
0... .... = Fin: False
.000 .... = Reserved: 0x0
.... 0000 = Opcode: Continuation (0)
1... .... = Mask: True
.111 1110 = Payload length: 126 Extended Payload Length (16 bits)
Extended Payload length (16 bits): 1016
Masking-Key: 117657bd
Masked payload
Payload
Continue: 616161616161616161616161616161616161616161616161...
WebSocket
1... .... = Fin: True
.000 .... = Reserved: 0x0
.... 0000 = Opcode: Continuation (0)
1... .... = Mask: True
.111 1110 = Payload length: 126 Extended Payload Length (16 bits)
Extended Payload length (16 bits): 937
Masking-Key: 3da9ca8d
Masked payload
Payload
Continue: 344b2033363020425249444745204a554d50494e472e6d70...

[iOS] crashes immediately upon connection

I'm using the code you have in your readme almost verbatim, but with orgins set to null and protocols set to null. As soon as I make a connection with a client using this code:
var ws = new WebSocket('ws://'+addr); ws.onopen = function (event) { console.log('connected'); }

My client will log the 'connected' line but the server device will crash to the "desktop"/app launcher of the device. Am I missing anything? It does this on two separate devices, one running iOS 9 and another on iOS 10

window.plugins is undefined

Using this on macos:

cordova create testwebsocket

cd testwebsocket

cordova platform add android

cordova plugin add cordova-plugin-websocket-server

cordova run android

window.plugins and wsserver are undefined. Is this plugin still supported?

By the way how can I contact you? Interest in a contract gig for similar functionality?

TCP_NODELAY

Thanks @becvert for this amazing plugin. A life-saver and works so well!

In the README, you mention that tcpNoDelay enables / disables Nagle's algorithm. If I am not mistaken, tcpNoDelay = false enables Nagle's algorithm. Am I correct?

Build Fails - Error 65

Any idea what may be the cause?

** BUILD FAILED **


The following build commands failed:
    CompileSwift normal i386 /Users/xx/Sites/xx/ipad/platforms/ios/xx/Plugins/cordova-plugin-websocket-server/WebSocketServer.swift
    CompileSwiftSources normal i386 com.apple.xcode.tools.swift.compiler
(2 failures)
Error: Error code 65 for command: xcodebuild with args: -xcconfig,/Users/xx/xx/ipad/platforms/ios/cordova/build-debug.xcconfig,-project,xx.xcodeproj,ARCHS=i386,-target,xx,-configuration,Debug,-sdk,iphonesimulator,build,VALID_ARCHS=i386,CONFIGURATION_BUILD_DIR=/Users/xx/ipad/platforms/ios/build/emulator,SHARED_PRECOMPS_DIR=/Users/xx/ipad/platforms/ios/build/sharedpch

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.