webpack+socket+node出现的问题
server端:
1 const express=require('express'); 2 //创建服务器 3 const app=express(); 4 const server=require('http').createServer(app); 5 const io=require('socket.io').listen(server); //socket 6 //监听端口号55566,,mysql的链接也要更改 7 server.listen(55566,(err)=>{ 8 if(err) 9 throw new err; 10 else 11 console.log('成功监听55566端口。'); 12 }); 13 14 io.on('connection',(socket)=>{ 15 //用户登录 16 socket.on('login',(data)=>{ 17 var sz=data.sz; //服务区 18 var username=data.username; //用户名 19 if(checkOnline(sz, username)){ //用户在线 20 //console.log('用户已在线') 21 socket.emit('isExist',true); 22 }else{ 23 console.log('登录成功') 24 //socket.id唯一 25 socket.sz=sz; 26 socket.username=username; 27 socket.emit('isExist',false); 28 } 29 }); 30 31 32 //用户断开连接 33 socket.on('disconnect',()=>{ 34 //console.log('用户下线') 35 }); 36 });
客户
端引用
1 import io from 'socket.io-client'; 2 //建立socket连接 3 var socket =io.connect('localhost:55566'); 4 socket.on('connect',()=>{ 5 socket.emit('login',{sz:sz,username:username}); 6 }); 7 8 //判断用户是否在线 9 socket.on('isExist',(status)=>{ 10 if(status==true){ //已经在线 11 alert('this user is online.'); 12 window.location=login_url; 13 }else{ //不在线 14 if(typeof(callback)=='function'){ 15 callback(); 16 } 17 } 18 });
浏览器打开时之前总是出现报错:这个问题花了几个小时折腾。
http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found)
引起原因是由于在客户端使用:
var socket =io.connect(');引起的,后来将其更改为即可
本地就用var socket =io.connect('localhost:55566');
var socket =io.connect(服务器IP地址+':'+端口号);