websocket只连接了一个客户客户端互发消息,但是每发一次消息,服务端就提示连接人数加一个,这是为什么

websocket只连接了一个客户客户端互发消息,但是每发一次消息,服务端就提示连接人数加一个,这是为什么

// concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。

服务端
    private static CopyOnWriteArraySet<StatusWS> webSocketSet = new CopyOnWriteArraySet<StatusWS>();

    private static Map<String, JSONObject> webSocketMap = new HashMap<String, JSONObject>();

    // 与某个客户端的连接会话,需要通过它来给客户端发送数据
    private Session session;

    private String APPID;

    /**
     * 连接建立成功调用的方法
     */
    @OnOpen
    public void onOpen(Session session) {

            this.session = session;
            webSocketSet.add(this); // 加入set中
            addOnlineCount(); // 在线数加1
        logger.info("有新连接加入!当前在线人数为" + getOnlineCount());

    }



客户端:

    $("#btnConnection").click(function() {
        socket = new WebSocket("ws://203.195.240/status");
        //打开事件
        socket.onopen = function() {
            alert("Socket 已打开");
            //socket.send("这是来自客户端的消息" + location.href + new Date());
        };
        //获得消息事件
        socket.onmessage = function(msg) {
            console.log(msg.data);
        };
        //关闭事件
        socket.onclose = function() {
            alert("Socket已关闭");
        };
        //发生了错误事件
        socket.onerror = function() {
            alert("发生了错误");
        }
    });

    //发送消息
    $("#btnSend").click(function() {
        socket.send("1001,1");
    });

    //关闭
    $("#btnClose").click(function() {
        socket.close();
    });

3个回答

一般不会啊 要不要把代码和log贴出来看下
正常client登上来连接一次,后面发送就不会了

是不是onMessage和onOpen方法的sout写反了?建议代码发出来大家好给你看看..

统计连接人数是根据什么来判断的?

qq_44101615
努力了才会进步 连接成功会执行Open方法,然后人数+1
大约 2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
socket客户端与服务端消息互发
客户端public class SocketClient { public static void main(String[] args){ SocketClient client = new SocketClient(); client.start(); } public void start(){ BufferedReader
Socket通信,服务端和客户端互发消息
对于socket的通信原理这里就不做介绍,再我的另外一篇博客里有相关介绍,这里直接上代码 服务端 package com.modou.workday.word; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReade...
tcp客户端和服务端互发消息
tcp客户端和服务端互发消息
为什么SOCKET客户端一次连接,只能发一次消息?
客户端Connect后,send发送消息 服务端可以收到。rn但是Connect后,我将连接后的的SOCKET保存在全局变量,再发送消息就不行。但是可以接收到服务器端的消息。我用的是同步。
SuperSocket 入门,实现客户端和服务端消息互发
SuperSocket 入门实例,实现客户端和服务端消息互发,亲测可用
socket简单实例,一次互发消息
eclipse中java项目文件复制package class6;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.I
客户端和服务器互发消息
本课程是支付宝小程序开发课程。从小程序前端的开发,到socket服务器如何搭建以及如何使用PHP处理socket请求,作为PHP开发人员如何为移动端应用提供api接口。全程通过基础加项目的方式让每一个开发者能够很好的掌握小程序类开发。
服务器与客户端互发消息的问题
目的:多客户端每隔固定时间发送消息“msg”给服务器,通过客户端的CPUID来识别不同客户端,当服务器发现此客户端是第一次发送消息时,则发送消息给此客户“请输入用户名”,客户端收到消息,输入用户名并发回给服务器消息“user”。rn现在的情况是 服务器发送给客户端的消息客户收到了,并回消息给服务器,但是服务器收到的仍然是消息“msg”,而不是“user”,并且服务器在发送完“请输入用户名”的消息后仍不断地发送空消息给客户端。 俺是菜鸟才开始做,大侠帮俺看看~~rn服务器端部分代码:rn[code=C#]rn//接收客户端消息rnTcpClient client = listener.AcceptTcpClient();rnNetworkStream ns = client.GetStream();rnbyte[] bytes = new byte[1024];rnint bytesread = ns.Read(bytes, 0, bytes.Length);rnmsg = Encoding.Default.GetString(bytes, 0, bytesread);rn //如果数据库中不存在此用户,则向客户端发送消息提示“输入用户名”rnif (bUserExist == false)rnrn byte[] send = System.Text.Encoding.Default.GetBytes("请输入用户名!".ToCharArray());rn ns.Write(send, 0, send.Length);rn bUserExist = true;rn ns.Close();rn client.Close();rn rn elsernrn this.statusBar1.Text = msg.ToString(); //测试看是不是接收到了用户名的信息rn ns.Close();rn client.Close();rn[code=C#][/code]rnrn客户端部分代码rn[code=C#]Client = new TcpClient(host, port );rnif (Client != null)rnrn NetworkStream sendStream = Client.GetStream();rn sendData = "CPUID=" + GetDeviceID() + ";"+...; //GetDeviceID()是获取本机cpuid的函数rn Byte[] data = System.Text.Encoding.ASCII.GetBytes(sendData); rn sendStream.Write(data, 0, data.Length);rn //如果接收到下面这条消息,就先停止向服务器发送消息,待服务器获得本机用户名后再继续发送rn byte[] recev = new byte[1024];rn int intrecev = sendStream.Read(recev, 0, recev.Length);rn string strrec = Encoding.Default.GetString(recev, 0, intrecev);rn if (MessageBox.Show(strrec) == DialogResult.OK)rn rn timer1.Enabled = false; //间隔固定时间发送消息,收到此消息后暂不发送,timer为falsern frmUsrName frmUsr = new frmUsrName();rn frmUsr.ShowDialog();rn string usrName = "";rn usrName = frmUsr.userName;rn frmUsr.Dispose();rn string sendUsrdata = "CPUID=" + GetDeviceID() + ";" + "Name=" + usrName;rn byte[] sendUsrNam = System.Text.Encoding.Default.GetBytes(sendUsrdata);rn sendStream.Write(sendUsrNam, 0, sendUsrNam.Length);rn MessageBox.Show(sendUsrdata);rn timer1.Enabled = true;rn rn rn sendStream.Close();rn Client.Close();rn sendData = null;[code=C#][/code]
WebSocket服务端发消息给客户端,浏览器收到消息就关闭了
自己按照 Websocket 的 文档写的, 浏览器每次连接上, 一收到消息就断开了rn报错:rn[color=#FF0000]WebSocket connection to 'ws://192.168.1.248:2051/' failed: A server must not mask any frames that it sends to the client.[/color]rn但是 内容根本就没有maskrn然后连网上别的websocket服务器,连上发消息正常; 然后直接对消息抓包 过来原文发送,还是报这个错误;rnwireshark 都能识别,但是 浏览器就是一收到就报错断开,,,快崩溃了了~~~~rnrn下面是发送的数据:rn[color=#0000FF]char tt[250]=0x81,0x53,0x7b,0x22,0x6a,0x73,0x6f,0x6e,0x72,0x70rn,0x63,0x22,0x3a,0x22,0x32,0x2e,0x30,0x22,0x2c,0x22,0x65,0x72,0x72,0x6f,0x72,0x22rn,0x3a,0x7b,0x22,0x63,0x6f,0x64,0x65,0x22,0x3a,0x2d,0x31,0x30,0x30,0x30,0x30,0x32rn,0x2c,0x22,0x6d,0x65,0x73,0x73,0x61,0x67,0x65,0x22,0x3a,0x22,0x54,0x65,0x73,0x74rn,0x5f,0x56,0x61,0x6c,0x75,0x65,0x20,0x69,0x73,0x20,0x6e,0x6f,0x74,0x20,0x76,0x61rn,0x6c,0x69,0x64,0x20,0x6a,0x73,0x6f,0x6e,0x22,0x7d,0x7d,0;[/color]
websocket之客户端连接服务端
tcp以及udp协议<br />nsocket常用函数<br />nwebsocket协议<br />nwebsocket实战web聊天室
Netty 客户端和服务端发送与接受消息
刚好翻以前拍的照片,今天就发几张去朋友家撸猫拍的照片吧。 微信公众号 王皓的GitHub:https://github.com/Tenac...
这是一个什么消息?
在使用WORD等软件过程中发现,当用鼠标选定一个词后,菜单和工具栏中的复制和剪切按键会由灰色变成激活,请问这相当于向系统发送了一个什么消息?
socket长连接多线程支持客户端服务端互发消息
socket长连接多线程支持客户端服务端互发消息 运行多个TUClient在控制台输入消息 消息格式如下:TA CM 114 :54089999000100000004|12|201002031029; 54089999000100000004代表客户端标识,每登录成功一个客户端将在内存中绑定一个客户标识与对应的socket输出流的映射,当服务端主动下行消息到客户端时,先找到要下行到客户端的socket输出流即可,运行http://127.0.0.1:8080/lx/index.jsp进行下行消息,修改index.jsp中的客户端标识即可下行到不同的客户端
socket多线程支持客户端服务端长连接互发消息
socket多线程支持客户端服务端长连接互发消息
ATL 消息互发
[vs2005] ATL实现两DLL, 使其能发送和接收消息。
进程通信,互发消息 mfc
主要是是两个程序互相获得对方句柄。主要是将得到的句柄转换为字符串,然后在接受方再转换为句柄。自己测试用的,代码有些乱,
局域网内互发消息
主机相互发送消息 背景 本学期的计算机网络课非常有意思,它与我们的生活息息相关,曾经我也为电脑发生的网络问题而困惑,总是没有根据的瞎尝试来试图解决问题。但是在老师的一些简单指导之后,有了一个基本的ip之间通信以及局域网的概念。于是就想,既然局域网内部不用通过路由器就能发送数据,那我就可以给同学的电脑发消息了呀,带着这样的兴趣,我开始了本次尝试。 发送消息 关掉发送消息电脑及接受电脑360安全卫...
线程锁+好友互发消息
1,线程锁 2件事情不能同时执行的时候,就要用到线程锁,防止多线程抢线,而造成程序的逻辑错误。 public static Object object; // 加锁,括号中可以用类名.Class,或者类中的同一个对象,来确定多个锁的一致性 synchronized (Object.class) { //执行语句 } 2,聊天窗口中好友互发消息 设计思路: (1)在服务器创建一个m...
socket 互发消息
本实例是利用socket实现发送消息功能,只为刚刚了解socket的朋友提供一个学习的实例,望大家共同进步……
linux+网络编程+服务器与客户端互发消息
网络资源修改下,实现服务器端与客户端的互相收发消息!
socket中如何做到每调一次send,只发一个消息
比如我有多个一样的消息,通过for语句调send逐条发送,虽然send每次成功,但实际通过抓tcp包,发现发快的时候,好几个消息打成一个包发的。我现在希望一个包每次只有一个消息发给对方,如何做到??
python--TCP/IP--客户端与服务器端互发消息
#客户端 import socket #创建socket对象 client_send = socket.socket() #确定IP ip_port = ("10.11.53.74",10010) #建立客户端链接 client_send.connect(ip_port) while True: #发送消息 msg = input("请输入消息:") if len(m...
客户端和服务器互发消息-java
服务器端得代码: package jiemian; import java.awt.*; import java.io.*; import javax.swing.*; import java.net.*; import java.awt.event.*; //一般把我发送过去得话要写在按钮得监听里,把对方发送过来得话写到按钮监听里 public class L13_3_1 extend...
这是为什么?(关于消息)
我在一个窗体上放置一个ApplicationEvents控件,在它的ONmessage事件处理函数中响应某个控件上的鼠标双击消息rn当时当我用postmessage(control.handle,WM_LBUTTONDBLICK,0,0)向控件发送消息时就有问题了,消息送出去后程序就一直忙,但是把程序最小话再恢复就好了,这时什么原因造成的?rnrn顺便问:为什么有时候浏览器窗口里的文本框写进去的东西不能修改
一个消息客户端的问题
原来有一个类似b/s的OA 系统;登录系统后,可以通过定时刷新的方式获取自己的消息提示内容;rn现在客户要求,不用打开IE 登录;就可以实现类似QQ 那样的消息提示,而且直接可以点击消息定位到相应的IE功能页面;rn请问这个该怎么实现,最好有人做过类似的例子;rnrn我的设想是:开发一个客户端,开机自动启动,然后定时去读取数据库弹出消息提示;点击连接到IE模块上;没搞过c/s;有点棘手。rn分不够可以再给,请帮忙!
android手机蓝牙自动配对,连接,互发消息
程序运行前提:两台具有蓝牙的手机均安装该程序 程序功能: 1.一台手机运行程序后选择服务端,自动打开蓝牙及蓝牙被发现(手机的打开蓝牙被发现功能需要人工确认),等待被连接 2.另一台手机运行程序后选择客户端,自动搜索选择了服务端的手机,进行自动配对(手机与手机的配对需要人工确认),并自动连接。这时在两台手机上均可看见连接成功,然后可以互发消息进行聊天 3.程序退出后自动关闭蓝牙 程序需要修改的地方: 需要在BluetoothTools类中修改BluetoothAddress和BluetoothAddress2两个变量,修改成准备测试的两个手机的蓝牙地址。 如果不知道手机的蓝牙地址,在BluetoothClientService类中的discoveryReceiver里面有打印语句。或debug跟踪查看。 该程序是作者因为项目需要写的测试程序,经测试完全可以正常运行,请根据需要自行修改代码
怎样互发消息和接收消息(急救)
我要向一个窗体发送消息,应该用SendMessage,但是那个消息标示符应该怎样自定义呢?rn要自定义一个接收消息的函数,应该怎样弄?rn能保证时时接受消息吗?rn怎样建立消息映射?rn请大家帮帮忙!!!!!
TCP客户端与服务端交互消息
TCP客户端与服务端交互消息代码 客户端 步骤 操作 1 创建客户端Socket对象并指定ip地址以及端口号 2 将字节输出流包装成字符缓冲输出流 3 将内容输出到服务端 4 将字节输入流包装成字符缓冲输入流 5 关闭资源 import java.io.BufferedReader; import ...
Java聊天室系统(一):客户与客户互发消息不相影响
实现功能: 1、多客户端模式下,实现客户与客户的单独通信,要求信息通过服务器中转 2、端到端的通信,实现并行通信模式(不再是你说一句,我说一句,一端的信息发送不受另一端的影响) 代码展示: 服务器端: import java.io.*; import java.net.*; public class MultiTalkServer{ public static Socket[] socket=n...
局域网内互发消息的问题.
局域网 ip都固定rnxp向98如何发送消息?rn98向98如何发送消息?rn要求:只能运行命令,不使用工具。rn谢谢!
动态连接库之间如何互发消息?
动态连接库之间如何互发消息?
java实现局域网互发消息
用java语言编写的局域网互发消息的工具
在一个定时器里显示MessageBox,每来一个Timer消息就会出一个对话框,为什么?
在一个定时器里显示MessageBox,每来一个Timer消息就会出一个对话框,rn如果你不关的话会出现一堆对话框。rn为什么不阻塞到第一个对话框等它结束后再运行第二个对话框呢?
客户端如何能接收服务端非阻塞的socket发的消息
服务端开发工具:delphi,非阻塞的socket,rnAndrorid客户阻塞接收,但是接收不到.代码如下:rn[code=java]BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));rn String inStr = in.readLine();[/code]rn到服务端发回文字信息时,客户端阻塞在上面一行代码,始弱收不到消息.rn请问如何能让客户端接收到服务端的消息.
pb MSWINSCK.OCX客户连接断开后,不能再连接了,也只有一个客户连接
pb MSWINSCK.OCX客户连接断开后,不能再连接了,也只有一个客户连接rn高手请指教。
如何在服务端获取客户端的消息
头文件中rn#define UM_SOCK WM_USER+100//准备接受网络消息的号rnafx_msg void Disp();rnrnCPP文件中rnON_COMMAND(UM_SOCK,Disp)rnrnvoid CStmessageApp::Disp()rnrnAfxMessageBox("ACCEPT SOCKET MESSAGE");rnrnrn如果客户端来了一个数据(用SOCKT 在LINUX下编写的,主要是向服务器发送数据),我怎么知道来了SOCKET消息
想做一个类似qq提示消息的界面,但是多条消息在一个窗口中显示
想做一个类似qq提示消息的界面,但是多条消息在一个窗口中显示,rnrn比如可以显示4条,当鼠标或者是上下按键移动到此记录的时候,要求背景色变换一下。rnrnrnrn请问这样的类似界面大家有没有做过的 ?
websocket之客户端与服务端握手
tcp以及udp协议<br />nsocket常用函数<br />nwebsocket协议<br />nwebsocket实战web聊天室
websocket服务端与客户端代码
websocket 实例,包括服务端及客户端,实现消息推送,完整代码。
websocket服务端 客户端源码
java websocket 服务端 客户端源码。实现转发功能。接收南向接口调用,并转发南向消息到北向接口,返回北向返回的消息给南向。
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数